Windows Phone模拟器功能正常,调试或部署到设备不能

时间:2011-04-14 21:37:06

标签: c# xml windows-phone-7 emulation

我正在开发一个非常简单的应用程序,它解析XML提要,进行一些格式化,然后在TextBlock中显示它。我已经在页面底部添加了一个hyperLink(称为“More ..”)(理想情况下,这将在解析XML之后添加到TextBlock的末尾),以通过更改XML提要的URL来添加更多内容到下一页。

我遇到的问题很奇怪,因为该程序在Windows Phone 7仿真器中运行良好,但是当我将其部署到设备或在设备上进行调试时,它可以在第一次点击“更多” ...“按钮,但第一次点击后的按钮似乎只是在从设备部署或调试时将空白空间添加到应用程序中。

我正在使用Samsung 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;

    }

1 个答案:

答案 0 :(得分:0)

感觉就像在这里做一些调试一样。

你能测试出错的地方吗?

  • 是否是后续尝试无效的点击?
  • 是HTTP加载失败吗?
  • 添加内联文本失败了吗?

看着它,我怀疑它是最后一件事。你能检查你的TextBlock是否期望多行文字?另外,考虑到你所写的内容(你似乎没有使用我已经看过的代码片段中的Inline),附加添加可能更容易新的内容到ListBox或StackPanel而不是TextBlock的内部 - ListBox特别是在虚拟化其内容显示方面有一些好处。