在多个网格之间共享列宽

问题描述 投票:1回答:1

我具有以下XAML:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition />
    </Grid.RowDefinitions>
    <Grid Grid.Row="0">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="Auto" />
        </Grid.ColumnDefinitions>
        <TextBlock Grid.Column="0" Text="Header 1" />
        <TextBlock Grid.Column="1" Text="Header 2" />
    </Grid>
    <ScrollViewer Grid.Row="1" VerticalScrollBarVisibility="Auto">
        <ItemsControl ItemsSource="{Binding SomeList}">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="*" />
                            <ColumnDefinition Width="*" />
                            <ColumnDefinition Width="Auto" />
                        </Grid.ColumnDefinitions>
                        <TextBox Grid.Column="0" Text="{Binding Value1}" />
                        <TextBox Grid.Column="1" Text="{Binding Value2}" />
                        <Button Grid.Column="2" Content="Button" />
                    </Grid>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>    
    </ScrollViewer>
</Grid>

而且我想实现这样的目标:

Header 1              |Header 2              |             <--   this is the top grid
------------------------------------------------------
Value 1.1             |Value 1.2             |[Button]         |
Value 2.1             |Value 2.2             |[Button]     <-- | this is the scroll viewer
Value 3.1             |Value 3.2             |[Button]         |

看起来类似于带有固定标题行的数据网格。我无法使用实际的DataGrid,因为在实际应用中,“标题1”和“标题2”实际上不是简单的网格文本标题,而是具有相当复杂标记的可交互元素。主要问题是如何实现所有三列的宽度同步?最后一列应将其大小调整为该列中最宽的按钮,而前两列应按50/50的比例共享剩余空间。感觉可以使用SharedSizeGroup属性来实现,但我无法弄清楚具体如何。

wpf xaml grid itemscontrol sharedsizegroup
1个回答
0
投票

我想我知道该怎么做:

© www.soinside.com 2019 - 2024. All rights reserved.