StackPanel截断元素

3

我有一个XAML自定义列表框项,其高度为165像素。

我正在使用这些项填充StackPanel:

StackPanel list = new StackPanel();
foreach (Course course in Semestris.Courses)
{
    TI.Course.Text = course.Name;
    list.Children.Add(TI);
}
Color color = ConvertStringToColor("#FF838383");
Brush brush = new SolidColorBrush(color);
list.Background = brush;
list.Height = list.Children.Count*165; //make size of stack panel just as to display all elements

请为查找错误添加颜色。

此堆栈面板正在放置在可扩展堆栈面板内:

Expander.Expander a = new Expander.Expander();
a.IsExpanded = false;
a.Content = list;
a.HeaderContent = Semestris.Name;

Expander控件的每一行都设置为自动,这意味着它将应用子元素的大小。
将所有Expander放入一个堆栈中的最后一步。
Stack.Children.Add(a);

我的问题是:
所有折叠展开器都正常工作:
当项目不多时,一切正常:
但是当项目数量超过30个时,它会出现这种情况: 问题出在哪里?

1
为什么需要固定高度值而不使用 MVVM? - Chris W.
Chris,需要固定列表框元素的高度,这样元素看起来更好 =)MWM是什么? - Developer
http://msdn.microsoft.com/zh-cn/library/windowsphone/develop/gg521153%28v=vs.105%29.aspx - 我之所以问是因为我不太习惯在代码后台而不是XAML中看到这么多的UI元素操作。 - Chris W.
2个回答

1

看起来你在堆栈面板或展开器中的高度属性上有问题(无论列表或展开器中有多少项)。但就像 Chris W. 一样,我建议将所有与 UI 相关的语句更多地放在 XAML 中而不是代码后面。

这样做时,请使用更多带有行定义设置为自动或 * 的网格作为高度,以指示必要或所有剩余的高度,并使用数据绑定。可能需要重新调整,但从那里开始,更容易看到实际发生了什么......


0

最好的事情是开发自己的扩展器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接