StackPanel切断元素

时间:2013-08-02 07:44:15

标签: 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控件将每一行都设置为auto,这意味着它将适合儿童的大小。

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

Stack.Children.Add(a);

我的问题是:

所有colapsed扩展器都可以正常工作:

Collapsed

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

1 item

但是当项目数量超过30项时,它就会这样做:

Cutted off

问题出在哪里?

2 个答案:

答案 0 :(得分:1)

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

执行此操作时,请使用更多网格,其中rowdefinitions设置为auto或* as height表示必要或所有剩余高度,并使用数据绑定。可能会有一些返工,但从那里可以更容易地看到真正发生的事情......

答案 1 :(得分:0)

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