当StackPanel宽度为全宽时,WP8 ListBox DataTemplate引发异常

时间:2013-10-23 16:34:51

标签: c# windows-phone-8

确切的XAML代码如下:

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

其他宽度值运行完美。

1 个答案:

答案 0 :(得分:1)

来自MSDN

  

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

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

  

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

也许您正在将StackPanel Width属性与专用于one GridColumnDefinition混合在一起,这不是double而是{{{}} 1}}类型。

如果您希望GridLength占据宽度的所有重播空间,则必须将其放入StackPanel

Grid

OR

您还可以尝试将StackPanel.HorizontalAlignement属性设置为<Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <StackPanel Margin="6,6,6,6" Background="Gray" Orientation="Vertical" HorizontalAlignment="Left"> ... </Grid> 值。

如果这些提案都不起作用,则问题会出现在StretchListBoxItem默认模板中。