如何将 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;
我尝试为从 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;