WPF:ColumnDefinition中的Star不扩展列

时间:2011-08-27 15:41:16

标签: wpf grid width ribbon

我有一个用户控件,需要第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="&gt;" Click="Button_Add_Click"/>
            <Button Content="&lt;" 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 中时

2 个答案:

答案 0 :(得分:2)

有时,当您将控件放在certian类型的布局控件(如StackPanel)中时,它将不会按预期调整大小,因为父布局只会将子项调整为最小所需大小(仅足以显示内容) )。当你把它放在RibbonGroup中时,这可能就是你看到这个的原因。尝试给你的网格一个宽度或最小宽度,看看是否有所作为。

答案 1 :(得分:0)

是的,它强制列1和3具有相同的大小,但它并不保证colulms内的内容(列表框)具有相同的大小。您必须设置内容的大小以占用整个空间