0

我有以下代码。

<Grid Grid.Row="1">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="100*" />
                    <ColumnDefinition Width="100*" />
                    <ColumnDefinition Width="100*" />
                    <ColumnDefinition Width="100*" />
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition Height="100*" />
                    <RowDefinition Height="100*" />
                    <RowDefinition Height="100*" />
                </Grid.RowDefinitions>

                <StackPanel Grid.Row="0" Grid.Column="0" Width="30*">
                    ...
                </StackPanel>
     </Grid>

我正在尝试将 Stackpanel 宽度设置为单元格的 30%。我已经提到了WPF: Setting the Width (and Height) as a Percentage Value的帖子。根据帖子,它的宽度应该是 30*,就像在网格中一样。但它显示错误“30 * 字符串无法转换为长度”。所以我想纠正错误,或者我只想找到一种方法来设置宽度为单元格 30% 的堆栈面板。谢谢。

4

1 回答 1

5

堆栈面板的宽度只能是两倍。网格宽度也可以采用 * 和 auto (如果未指定,* 为默认值)

另请注意,无论内容需要什么,StackPanel 都不会占用更多宽度。Horizo​​ntalAlignment="Stretch" 无效。

我建议你改为这样做。

        <Grid Grid.Row="1">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="100*" />
            <ColumnDefinition Width="100*" />
            <ColumnDefinition Width="100*" />
            <ColumnDefinition Width="100*" />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="100*" />
            <RowDefinition Height="100*" />
            <RowDefinition Height="100*" />
        </Grid.RowDefinitions>


        <Grid Grid.Row="0" Grid.Column="0" >
            <Grid.ColumnDefinitions>
                <ColumnDefinition />
                <ColumnDefinition />
                <ColumnDefinition />
            </Grid.ColumnDefinitions>

            <StackPanel>
            </StackPanel>

        </Grid>
    </Grid>
于 2013-03-22T08:46:35.437 回答