【发布时间】:2017-01-21 19:33:37
【问题描述】:
我需要动态地创建一些 FrameworkElements。我有一个 StackPanel,我在其中创建了一个 Pivot,一个 PivotItem,一个带有 StackPanel 和按钮的 ScrollViewer,如下所示:
Pivot pivot = new Pivot();
PivotItem pivotItem = new PivotItem();
pivot.Items.Add(pivotItem);
ScrollViewer scrollViewer = new ScrollViewer();
StackPanel stackContent = new StackPanel();
scrollViewer.Content = stackContent;
pivotItem.Content = scrollViewer;
stackContent.Children.Add(new Button() { Content = "button 1" });
stackContent.Children.Add(new Button() { Content = "button 2" });
stackContent.Children.Add(new Button() { Content = "button 3" });
stackContent.Children.Add(new Button() { Content = "button 4" });
stackContent.Children.Add(new Button() { Content = "button 5" });
stackContent.Children.Add(new Button() { Content = "button 6" });
stackContent.Children.Add(new Button() { Content = "button 7" });
stackContent.Children.Add(new Button() { Content = "button 8" });
stackContent.Children.Add(new Button() { Content = "button 9" });
stackContent.Children.Add(new Button() { Content = "button 10" });
stackContent.Children.Add(new Button() { Content = "button 11" });
stkPanel.Children.Add(pivot);
这是 C# XAML 代码:
<StackPanel x:Name="stkPanel">
</StackPanel>
如果我尝试在 XAML 中创建所有元素,ScrollViewer 会按预期工作,但我需要在页面中发生某些事件时动态创建它们。
在调试中检查页面,PivotItem 有“ActualHeight == 0”,所以我想它里面的 ScrollViewer 因为这个原因不起作用,但我不知道如何修复它,也许对 ScrollViewer 有某种说法“给自己充电”以使卷轴正常工作。
【问题讨论】:
-
在 XAML 中创建所有内容时可以添加工作代码吗?但基本上 StackPanel 会使用所需的空间,所以如果我没记错的话,StackPanel 中的 ScrollViewer 永远不会工作......
-
这就是问题所在,该死的 StackPanel ...如果我通过 Grid 更改它,一切正常!
标签: c# uwp win-universal-app windows-10-universal frameworkelement