0

我有StackPanel一个固定宽度的。在里面StackPanel我有一个GridView,它Width应该限制在它的父宽度(smth like Width="*")。

我的示例 XAML:

<StackPanel Orientation="Horizontal" Width="300" Height="300">
        <TextBox Width="50" Margin="0" Height="50" Background="Blue"></TextBox>
        <GridView >
            <GridView.ItemsPanel>
                <ItemsPanelTemplate>
                    <WrapGrid Orientation="Horizontal" FlowDirection="LeftToRight" />
                </ItemsPanelTemplate>
            </GridView.ItemsPanel>
            <GridView.Items>
                <TextBox Width="50" Margin="0" Height="50" Background="Green"></TextBox>
                <TextBox Width="50" Margin="0" Height="50" Background="Green"></TextBox>
                <TextBox Width="50" Margin="0" Height="50" Background="Green"></TextBox>
                <TextBox Width="50" Margin="0" Height="50" Background="Green"></TextBox>
                <TextBox Width="50" Margin="0" Height="50" Background="Green"></TextBox>
            </GridView.Items>
        </GridView>
    </StackPanel>

在此示例中,GridView宽度比父项宽,因此它的一些项目没有显示(未包装)。当我将GridView宽度设置为固定值时,项目被包装,但我不能在我的项目中使用固定值。

4

2 回答 2

1

Grid在这种情况下,拥有 a而不是 a更有益StackPanel。下面的代码将达到预期的效果(GridView将占用 旁边的任何未使用的空间TextBox)。

<Grid Width="300" Height="300">
    <Grid.ColumnDefinitions>
    <ColumnDefinition Width="50" />
    <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>
            <TextBox Grid.Column="0" Height="50" Background="Blue"></TextBox>
            <GridView Grid.Column="1">
                <GridView.ItemsPanel>
                    <ItemsPanelTemplate>
                        <WrapGrid Orientation="Horizontal" FlowDirection="LeftToRight" />
                    </ItemsPanelTemplate>
                </GridView.ItemsPanel>
                <GridView.Items>
                    <TextBox Width="50" Margin="0" Height="50" Background="Green"/>
                    <TextBox Width="50" Margin="0" Height="50" Background="Green"/>
                    <TextBox Width="50" Margin="0" Height="50" Background="Green"/>
                    <TextBox Width="50" Margin="0" Height="50" Background="Green"/>
                    <TextBox Width="50" Margin="0" Height="50" Background="Green"/>
                </GridView.Items>
            </GridView>
</Grid>
于 2013-05-08T12:33:05.053 回答
0

您可以尝试启用horizo​​ntalscrollmode 并将horizo​​ntalscrollbarvisibility 设置为true。但数据不会被包装。

于 2013-05-16T19:15:49.887 回答