c# - StackPanel 截断元素

标签 c# silverlight windows-phone-7 xaml windows-phone-8

我有 xaml 自定义列表框项,高度为 165px

我正在用这些项目填充 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 StackPanel 中:

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

Expander 控件将每一行设置为自动,这意味着它将应用子项的大小。

最后一步是将所有 Expander 放入 1 个堆栈中:

Stack.Children.Add(a);

我的问题是:

所有折叠的扩展器都可以正常工作:

Collapsed

当项目不多时,一切正常:

1 item

但是当元素数量超过 30 件时,它会这样做:

Cutted off

问题出在哪里?

最佳答案

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

当您这样做时,使用更多行定义设置为 auto 或 * 作为高度的网格,以指示必要的或所有剩余的高度,并对数据使用绑定(bind)。可能需要一些返工,但从那里可以更容易地看到真正发生的事情......

关于c# - StackPanel 截断元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18011459/

相关文章:

c# - 如何更改启动画面图像的位置?

json - 使用JSon.NET对动态数据反序列化JSON

c# - 使用 WebRequest 发布

c# - ViewModel 的暴露数据取决于 View 的大小

c# - 如何在 C# Web Api 中流式传输文件上传以进行数据库存储

c# - 始终从 Entity Framework 4 查询中排除属性

c# - 使用 Postgres 和 C# 插入到哪里

silverlight - silverlight 开发人员的笔记本电脑上有什么软件

Silverlight 将 bool 绑定(bind)到图像源

.net - 为什么需要 Web 服务才能从 Silverlight 访问数据库?