Scrollviewer中StackPanel中的TextBlock未显示所有内容

时间:2014-12-20 18:29:58

标签: c# xaml windows-phone-8 size scrollviewer

我正在从网络服务中读取文本,并希望在文本块中显示所有文本。我得到了大约50%的文字,并且无法弄清楚为什么没有显示其余内容。

这是我的xaml代码:

    <!--ContentPanel - place additional content here-->

    <Grid x:Name="ContentPanel" Grid.Row="1" >

            <Grid.Background>
                <ImageBrush ImageSource="/Images/bg-body_mail.png" />
            </Grid.Background>
        <ScrollViewer Name="scrvw">
            <StackPanel Name="stkpnl" >

            </StackPanel>
        </ScrollViewer>
    </Grid>

这是我的c#代码:

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {                
            var client = new WebClient();
            string result = "";
            client.DownloadStringCompleted += (q, f) =>
            {
                result = f.Result.Trim();
                string[] strArr = null;
                char[] splitchar = { '~' };
                strArr = result.Split(splitchar);
                pagetitle.Text = strArr[0];


                int lengte = strArr[1].Length;
                int lines = lengte / 40;
                stkpnl.Margin = new Thickness(10, 0, 10, 0);



                TextBlock txtVerhaal = new TextBlock();

                txtVerhaal.Margin = new Thickness(12, 0, 12, 0);

                txtVerhaal.TextWrapping = TextWrapping.Wrap;

                string text = strArr[1];
                text=text.Replace("<p>", "\r\n\r\n");

                text = text.Replace("<br />", "\r\n");
                text = text.Replace("</p>", "");
                txtVerhaal.Text = text;
                stkpnl.Children.Add(txtVerhaal);


            };
            client.DownloadStringAsync(new Uri(url));
    }

结果中的字符总数约为7000个字符,但仅显示约3000个字符。任何textblock,stackpanel或其他任何定义都没有限制。

我一定做错了什么,但我无法弄清楚是什么。

(是的,我需要一个文本块中的字符数量)。

欢迎任何建议。

2 个答案:

答案 0 :(得分:0)

结束代码后需要调用 layoutupdate(); 函数

答案 1 :(得分:0)

尝试使用WebBrowser控件。

var webBroswer = new WebBrowser(); webBroswer.NavigateToString(结果);

然后添加此浏览器控件&#39; webBroswer&#39;在你的StackPanel&#39; stkpnl&#39;中。 stkpnl.Children.Add(webBroswer);