2

确切的 XAML 代码如下:

    <ListBox.ItemTemplate>
            <DataTemplate>
            <StackPanel Margin="6,6,6,6"
                        Background="Gray"
                        Orientation="Vertical"
                        HorizontalAlignment="Left"
                        Width="*">
                        ...

其他宽度值运行完美。

4

1 回答 1

1

来自MSDN

对象的宽度,以像素为单位。默认值为 Double.NaN。除特殊的 Double.NaN 值外,该值必须等于或大于 0。上限信息见备注

它不能*作为价值。它可以采用的唯一特殊值是Double.NaN(表示自动行为):

Height和Width的默认值不是0;它是 Double.NaN。高度和宽度支持成为未设置的“自动”值的能力。因为 Height 和 Width 是双精度值,所以 Double.NaN 用作一个特殊值来表示这种“自动”行为。布局系统将“自动”值解释为通常意味着对象的大小应调整为布局中的可用大小,而不是特定的像素值。

也许您将 StackPanel Width属性与专用于GridColumnDefinition的属性混合在一起,这不是一种类型,而是一种类型。doubleGridLength

如果你想让你StackPanel在宽度上占据所有剩余空间,那么你必须把它放在 a 内Grid

<Grid>
  <Grid.ColumnDefinitions>
     <ColumnDefinition Width="*"/>
  </Grid.ColumnDefinitions>
  <StackPanel Margin="6,6,6,6"
              Background="Gray"
              Orientation="Vertical"
              HorizontalAlignment="Left">
  ...
</Grid>

或者

您也可以尝试简单地将StackPanel.Horizo​​ntalAlignement属性设置为该Stretch值。

如果这些提议都不起作用,则问题位于默认模板ListBoxItem内。ListBox

于 2013-10-23T16:40:22.337 回答