首页 > 解决方案 > 强制两个 WPF 控件具有相同的宽度,同时保持来自 xaml 的自动调整大小(两个控件的宽度都大于两个)

问题描述

我正在尝试定义一个 1x3 网格,其中第一列和第三列的宽度自动调整大小以适合其内容但保持相等的宽度。我想我可以通过将每个 ColumnDefinition 的 MinWidth 属性绑定到其他列 ActualWidth 来实现这一点。但这似乎不起作用。有人可以解释为什么以下代码不起作用吗?

'''

<DataTemplate DataType="{x:Type edvm:NodeViewModel}">
   <Grid">
      <Grid.ColumnDefinitions>
        <ColumnDefinition
             x:Name="inCol"
             Width="Auto"
             MinWidth="{Binding ElementName=outCol, Path=ActualWidth}" />
        <ColumnDefinition 
            Width="*" 
            MinWidth="25" />
        <ColumnDefinition
            x:Name="outCol"
            Width="Auto"
            MinWidth="{Binding ElementName=inCol, Path=ActualWidth}" />
     </Grid.ColumnDefinitions>
   </Grid>
</DataTemplate>

'''

标签: wpfxamluser-interface

解决方案


设置SharedSizeGroup两个 ColumnDefinition 的属性。那也会隐含地设置Width="Auto".

<Grid Grid.IsSharedSizeScope="True">
    <Grid.ColumnDefinitions>
        <ColumnDefinition SharedSizeGroup="OuterColumns"/>
        <ColumnDefinition MinWidth="25"/>
        <ColumnDefinition SharedSizeGroup="OuterColumns"/>
    </Grid.ColumnDefinitions>
    ...
</Grid>

推荐阅读