实现Gird不同行的相同列共享宽度

当Grid的父容器,将Grid的附加属性 IsSharedSizeScope 属性值设置为 true时,SharedSizeGroup 的每个列或行成员都共享大小调整信息,而不考虑行或列的内容。行和列之间的大小共享依照SharedSizeGroup属性进行匹配。

image

点击查看代码
<Window
    x:Class="WpfApp1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:local="clr-namespace:WpfApp1"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    Title="MainWindow"
    Width="800"
    Height="450"
    mc:Ignorable="d">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <ListBox Grid.Column="0" ItemsSource="{Binding students}">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition />
                            <ColumnDefinition />
                        </Grid.ColumnDefinitions>
                        <TextBlock
                            Grid.Column="0"
                            Margin="50,0"
                            Text="{Binding Name}" />
                        <TextBlock
                            Grid.Column="1"
                            Margin="50,0"
                            Text="{Binding Age}" />
                    </Grid>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
        <ListBox
            Grid.Column="1"
            Grid.IsSharedSizeScope="True"
            ItemsSource="{Binding students}">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition SharedSizeGroup="A" />
                            <ColumnDefinition SharedSizeGroup="B" />
                        </Grid.ColumnDefinitions>
                        <TextBlock
                            Grid.Column="0"
                            Margin="50,0"
                            Text="{Binding Name}" />
                        <TextBlock
                            Grid.Column="1"
                            Margin="50,0"
                            Text="{Binding Age}" />
                    </Grid>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </Grid>
</Window>

posted @ 2025-08-29 14:58  Ytytyty  阅读(10)  评论(0)    收藏  举报