如何将 scrollViewer 添加到文本块的堆栈面板中?

How to add a scrollViewer in to a stack panel for a text block?

我尝试为从 c# 后面创建的文本块添加滚动查看器,文本块已添加到堆栈面板 stackPanel.Children.Add(text block)。我想在 Windows Phone 8.0.

中做到这一点

什么时候做这样的事情:

StackPanel stackPanel = new StackPanel();    
ScrollViewer sv = new ScrollViewer();    
sv.Content = stackPanel;

我收到:

ExceptionObject = {"Value does not fall within the expected range."}.

解决该异常的解决方案?

使用以下代码(其中 Content 为 Grid):

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        var textBlock = new TextBlock() { Text = "hello" };

        var stackPanel = new StackPanel();
        stackPanel.Children.Add(textBlock);

        var sv = new ScrollViewer { Content = stackPanel };

        this.Content.Children.Add(sv);
    }

我得到了想要的输出:

所以我试着重现你的错误。如果 TextBlock 为 null,我会得到相同的异常 。那么也许您创建 TextBlock 的代码有一些问题?这是一个例子:

        TextBlock text = null;

        var stackPanel = new StackPanel();
        stackPanel.Children.Add(text);

        var sv = new ScrollViewer { Content = stackPanel };

        this.Content.Children.Add(sv);

将导致:

ScrollViewer 根据子控件的尺寸计算它的滚动条。 如果您的 TextBlock 设置了 Height 属性,请将其删除,ScrollBars 应该会按预期工作。

你还应该设置:

sv.Content = yourTextBlock;