0

简单代码:

<ItemsControl Grid.IsSharedSizeScope="True" >
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition SharedSizeGroup="firstColumn" Width="Auto"/>
                    <ColumnDefinition SharedSizeGroup="splitterColumn" Width="Auto"/>
                    <ColumnDefinition SharedSizeGroup="lastColumn" Width="*"/>
                </Grid.ColumnDefinitions>
                <TextBlock Text="{Binding Path=Key}"/>
                <GridSplitter Width="5" Grid.Column="1" />
                <TextBlock Text="{Binding Path=Value}" Grid.Column="2"/>
            </Grid>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

出现问题lastColumnwidth其中不是 100%。我尝试HorizontalAlignment="Stretch"为所有网格设置,但没有帮助。

的宽度lastColumn必须为 100%。如何解决这个问题?

4

1 回答 1

2

您不需要包含SharedSizeGroup在每一列中。在这种情况下,如果您的第一列和第二列共享一个大小,您应该能够通过省略最后一列的属性来获得所需的行为。如果前两列共享大小,则最后一列的空间应该始终相同:

<Grid Width="300" Height="30" Background="Red">
    <Grid Grid.IsSharedSizeScope="True">
        <Grid.ColumnDefinitions>
            <ColumnDefinition SharedSizeGroup="firstColumn" Width="Auto"/>
            <ColumnDefinition SharedSizeGroup="splitterColumn" Width="Auto"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
        <TextBox Text="1" Grid.Column="0"/>
        <GridSplitter Width="5" Grid.Column="1"/>
        <TextBox Text="Test" Grid.Column="2" />
    </Grid>
</Grid>

编辑:这本质上是这里遇到的问题:Grid.IsSharedScopeSize incompatible with * columns in WPF Grid

进一步编辑:您已更改为ItemsControlnow,但仍应适用。

于 2014-06-29T13:10:24.450 回答