我有一个用户控件,需要第1列和第3列始终具有相同的宽度。 我的代码如下:
<UserControl x:Class="UserControls.ListBoxSelector"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="5*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="5*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<ListBox x:Name="ListBox_Source" Grid.Column="0" Grid.Row="0" />
<StackPanel Grid.Column="1" Grid.Row="0" Orientation="Vertical">
<Button Content=">" Click="Button_Add_Click"/>
<Button Content="<" Click="Button_Remove_Click" />
</StackPanel>
<ListBox x:Name="ListBox_Destination" Grid.Column="2" Grid.Row="0" />
</Grid>
</UserControl>
结果与预期不符,因为第3列(ListBox_Destination)根本没有展开。 ColumnDefinition中的5 *不足以强制2列表框具有相同的宽度吗?
更新:对不起,我忘了提到问题只发生在我使用用于WPF的Microsoft功能区 将控件置于 RibbonGroup 中时
答案 0 :(得分:2)
有时,当您将控件放在certian类型的布局控件(如StackPanel)中时,它将不会按预期调整大小,因为父布局只会将子项调整为最小所需大小(仅足以显示内容) )。当你把它放在RibbonGroup中时,这可能就是你看到这个的原因。尝试给你的网格一个宽度或最小宽度,看看是否有所作为。
答案 1 :(得分:0)
是的,它强制列1和3具有相同的大小,但它并不保证colulms内的内容(列表框)具有相同的大小。您必须设置内容的大小以占用整个空间