WP8 列表框数据模板在堆栈面板宽度为全宽时引发异常
本文关键字:异常 列表 数据 堆栈 WP8 | 更新日期: 2023-09-27 18:36:39
确切的 XAML 代码如下所示:
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Margin="6,6,6,6"
Background="Gray"
Orientation="Vertical"
HorizontalAlignment="Left"
Width="*">
...
其他宽度值运行完美。
从 MSDN :
对象的宽度(以像素为单位)。默认值为 Double.NaN。除了 对于特殊的 Double.NaN 值,此值必须等于 或 大于 0。有关上限信息,请参阅备注
它不能*
作为价值。它唯一可以采用的特殊值是Double.NaN
(表示自动行为):
Height and Width 的默认值不是 0;它是 Double.NaN。 高度和宽度支持未设置的"自动"值。 由于高度和宽度是双精度值,因此 Double.NaN 用作 表示此"自动"行为的特殊值。布局系统 将"Auto"值解释为通常意味着对象应该 调整为布局中的可用大小,而不是特定的大小 像素值。
也许您正在将 StackPanel Width 属性与专用于 Grid 的 ColumnDefinition 的属性混合在一起,它不是一个double
,而是一个GridLength
类型。
如果您希望您的StackPanel
占据所有剩余空间的宽度,那么您必须将其放在Grid
内:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackPanel Margin="6,6,6,6"
Background="Gray"
Orientation="Vertical"
HorizontalAlignment="Left">
...
</Grid>
或
您也可以尝试简单地将 StackPanel.HorizontalAlignement 属性设置为 Stretch
值。
如果这些建议都不起作用,则问题出在ListBoxItem
或ListBox
默认模板中。