如果基本为Grid
,ColumnDefinition
的宽度设置为*
,则忽略其中包含的按钮的硬编码宽度属性,这些子元素被剪裁。它们的剪裁宽度设置为Auto
。
如果在每个MinWidth
上设置了正确的ColumnDefinition
,则会阻止此裁剪,但这不是完全动态的。
我做错了还是WPF最好提供的?
变为
标记:
<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>
我希望按钮在有空间时按照第一张图像显示,而在没有按钮时显示为图像三(即在任何情况下都没有剪裁)。
答案 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>