如何让WPF网格列宽度=" *"但也有动态的最小宽度,因此内容不会被裁剪

时间:2017-06-23 00:53:41

标签: wpf xaml grid columndefinition

我在wpf网格中有3列需要成比例

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="50"></RowDefinition>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"></ColumnDefinition>
        <ColumnDefinition Width="2*"></ColumnDefinition>
        <ColumnDefinition Width="*"></ColumnDefinition>
    </Grid.ColumnDefinitions>
    <Border Grid.Column="0" Background="Yellow"></Border>
    <Border Grid.Column="2" Background="Yellow">
    </Border>
        <Border  Grid.Column="1" Background="Green">
            <Label Content="This is the Green Cell"></Label>
        </Border>
</Grid>

结果

enter image description here

问题是绿色列中的文字被裁剪。我可以通过设置MinWidth =&#34; 150&#34;来解决问题。但是,绿色列内容将是动态的,因此我无法使用150的值。如何解决此问题?

1 个答案:

答案 0 :(得分:0)

我认为这可以达到你想要的效果:Label是如何在其边框内水平对齐的,所以它自然地适应它想要的任何东西,而不是伸展到它的父级。我给它一个半透明的背景,这样你就可以看到它实际上占据了它的哪一部分。

然后我们将第1列的MinWidth绑定到ActualWidth的{​​{1}}。第1列可以尽可能宽,但它不能比Label更窄。

Label