Grid忽略WPF中的ClipToBounds

时间:2016-03-29 11:28:10

标签: c# wpf clipping

如果基本为GridColumnDefinition的宽度设置为*,则忽略其中包含的按钮的硬编码宽度属性,这些子元素被剪裁。它们的剪裁宽度设置为Auto

如果在每个MinWidth上设置了正确的ColumnDefinition,则会阻止此裁剪,但这不是完全动态的。

我做错了还是WPF最好提供的?

enter image description here

变为

enter image description here

标记:

    <Grid ShowGridLines="True" ClipToBounds="False">
        <Grid.ColumnDefinitions>
            <ColumnDefinition></ColumnDefinition>
            <ColumnDefinition></ColumnDefinition>
            <ColumnDefinition></ColumnDefinition>
        </Grid.ColumnDefinitions>
            <Button Grid.Column="0" Width="120">AAAAA</Button>
            <Button Grid.Column="1" Width="120">BBBB</Button>
            <Button Grid.Column="2" Width="120">CCCCC</Button>
    </Grid>

我希望按钮在有空间时按照第一张图像显示,而在没有按钮时显示为图像三(即在任何情况下都没有剪裁)。

enter image description here

2 个答案:

答案 0 :(得分:1)

啊,我已经解决了以下问题:

关键是MinWidth中的ColumnDefinition属性。

 <Grid ShowGridLines="True">
        <Grid.ColumnDefinitions>
            <ColumnDefinition MinWidth="{Binding Path=ActualWidth, ElementName=spLeft }"></ColumnDefinition>
            <ColumnDefinition MinWidth="{Binding Path=ActualWidth, ElementName=spMid }"></ColumnDefinition>
            <ColumnDefinition MinWidth="{Binding Path=ActualWidth, ElementName=spRight }"></ColumnDefinition>
        </Grid.ColumnDefinitions>
        <StackPanel Background="Red" Grid.Column="0" Name="spLeft" HorizontalAlignment="Center">
            <Button  Width="120">AAAAA</Button>
        </StackPanel>
        <StackPanel Background="Green" HorizontalAlignment="Center" Grid.Column="1" Name="spMid">
            <Button  Width="120">BBBB</Button>
        </StackPanel>
        <StackPanel Background="Blue" Name="spRight" Grid.Column="2" HorizontalAlignment="Center">
            <Button  Width="120">CCCCC</Button>
        </StackPanel>
    </Grid>

答案 1 :(得分:0)

只需向网格添加MinWidth:

<Grid ShowGridLines="True" ClipToBounds="False" MinWidth="360">
    <Grid.ColumnDefinitions>
        <ColumnDefinition></ColumnDefinition>
        <ColumnDefinition></ColumnDefinition>
        <ColumnDefinition></ColumnDefinition>
    </Grid.ColumnDefinitions>
        <Button Grid.Column="0" Width="120">AAAAA</Button>
        <Button Grid.Column="1" Width="120">BBBB</Button>
        <Button Grid.Column="2" Width="120">CCCCC</Button>
</Grid>