我正在开发一个非常简单的应用程序,解析XML提要,做一些格式化,然后在TextBlock中显示它。我在页面底部添加了一个超链接(称为"More..")(理想情况下,这将在XML被解析后添加到TextBlock的末尾),通过将XML提要的URL更改为下一页来添加更多内容。
我遇到的问题是一个奇怪的程序工作完美时,在Windows Phone 7模拟器,但当我将其部署到设备或调试设备,它适用于"More…"按钮的第一次点击,但那些在第一次点击似乎只是添加空白空间到应用程序时,部署或调试设备。
我使用的是三星Focus (NoDo),最初认为这可能与我可能没有使用最新的开发工具有关。我已经确保我正在运行最新版本的Visual Studio,但仍然遇到这个问题。
这里是我的一些代码片段,以帮助。
我在这里声明了clickCount变量:
public partial class MainPage : PhoneApplicationPage
//set clickCount to 2 for second page
int clickCount = 2;
下面是我用来解析XML文件的代码片段:
void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Error == null)
{
ListBoxItem areaItem = null;
StringReader stream = new StringReader(e.Result);
XmlReader reader = XmlReader.Create(stream);
string areaName = String.Empty;
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.Element)
{
if (reader.Name == "example")
{
areaName = reader.ReadElementContentAsString();
areaItem = new ListBoxItem();
areaItem.Content = areaName;
textBlock1.Inlines.Add(areaName);
textBlock1.Inlines.Add(new LineBreak());
}
}
}
}
}
和单击hyperLink按钮时的代码:
private void hyperlinkButton1_Click(object sender, RoutedEventArgs e)
{
int stringNum = clickCount;
//URL is being incremented each time hyperlink is clicked
string baseURL = "http://startofURL" + stringNum + ".xml";
Uri url = new Uri(baseURL, UriKind.Absolute);
WebClient client = new WebClient();
client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted);
client.DownloadStringAsync(url);
//increment page number
clickCount = clickCount + 1;
}
感觉这里还有一些调试工作要做。
你能测试一下到底哪里出错了吗?
- 是点击不工作的后续尝试?
- 是HTTP加载失败吗?
- 是添加内联文本失败吗?
看着它,我怀疑这是最后一件事。你能检查你的TextBlock是期待多行文本吗?此外,考虑到你所写的(你似乎并没有真正利用内联的代码片段,我已经看到),它可能更容易追加添加新的内容到一个ListBox或StackPanel,而不是到TextBlock的内部- ListBox的特别有一些好处,在虚拟化其内容的显示方面。