【问题标题】:StackPanel cuts off elementsStackPanel 切断元素
【发布时间】:2013-08-02 07:44:15
【问题描述】:

我有 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 StackPanel 中:

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

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

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

Stack.Children.Add(a);

而我的问题是:

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

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

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

问题出在哪里?

【问题讨论】:

  • 为什么是固定的高度值而没有mvvm?
  • 克里斯,列表框元素的固定高度是必需的,因为这样元素看起来更好 =) 什么是 MWM?
  • msdn.microsoft.com/en-us/library/windowsphone/develop/… - 我之所以这么问,是因为我真的不习惯通过代码而不是 xaml 对 UI 元素进行如此多的操作。

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    最好的办法是开发我自己的 Expander。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多