C# Windows Phone Emulator功能正常,调试或部署到设备时无法正常工作

C# Windows Phone Emulator功能正常,调试或部署到设备时无法正常工作,c#,xml,windows-phone-7,emulation,C#,Xml,Windows Phone 7,Emulation,我正在开发一个非常简单的应用程序,它解析XML提要,进行一些格式化,然后将其显示在文本块中。我在页面底部添加了一个超链接(称为“More..”)(理想情况下,在解析XML后,它会添加到文本块的末尾),通过将XML提要的URL更改为下一页来添加更多内容 我遇到的问题是一个奇怪的问题,因为在WindowsPhone7模拟器中,该程序可以完美地工作,但当我将其部署到设备或在设备上调试时,第一次单击“更多。。。按钮,但第一次单击后的按钮似乎只是在从设备部署或调试时向应用程序添加了空白空间 我使用的是三星

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

我遇到的问题是一个奇怪的问题,因为在WindowsPhone7模拟器中,该程序可以完美地工作,但当我将其部署到设备或在设备上调试时,第一次单击“更多。。。按钮,但第一次单击后的按钮似乎只是在从设备部署或调试时向应用程序添加了空白空间

我使用的是三星福克斯(Samsung Focus,NoDo),最初认为这可能与我可能没有最新的开发工具有关。我已经确保运行的是最新版本的VisualStudio,并且仍然遇到这个问题


下面是我的一些代码片段,以帮助解决这个问题

我在这里声明了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());

                    }
                }
            }

        }
    }
以及单击超链接按钮时的代码:

    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在虚拟化其内容显示方面尤其有一些好处。

我会做更多的挖掘,但我猜测是这样的:当所有后续的点击都会在文本块的底部增加更多的空白时,点击会起作用。不确定HTTP加载或添加内联文本,这很可能也是原因。我觉得奇怪的是,它在模拟器上工作得很好,但在设备上却失败了。我使用textBlock主要是因为我在列表框中包装文本时遇到困难,它根本不起作用。当我单击“更多…”按钮时,它会给我更多,但不会加载所有提要。它切断了。这让我想知道这是否是对文本块大小的限制?它包含的ScrollViewer和textBlock的高度都设置为Auto,MaxHeight设置为Infinity。通过将textBlock的高度设置为一个非常大的数字来测试这一点,文本以一定的长度截断,这让我相信还有另一个问题。调整大小的过程应该是正常的,而且实际上效果很好。现在读一下:文本块大小似乎有一个限制。啊哈-你已经达到2048限制了-我认为这个限制适用于任何单个控件的高度/宽度。我绝对推荐你使用列表框来做你正在做的事情。里面的面板可以节省内存。