【问题标题】:WPF: Star in ColumnDefinition not expanding columnsWPF:ColumnDefinition中的星号不扩展列
【发布时间】:2011-11-05 03:28:12
【问题描述】:

我有一个用户控件,它需要第一列和第三列始终具有相同的宽度。 我的代码如下:

<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 列表框的宽度相同吗??

已更新:抱歉,我忘记提及该问题仅在我使用 Microsoft Ribbon for WPF

将控件放入 RibbonGroup 时发生

【问题讨论】:

  • 是的,这将导致他们每个人使用相同数量的剩余可用宽度。你的例子对我来说很好。您遇到了什么问题?

标签: wpf grid width ribbon


【解决方案1】:

有时,当您将控件放入某些类型的布局控件(如 StackPanel)中时,它不会按预期调整大小,因为父布局只会将子布局调整为所需的最小大小(刚好足以显示内容)。这可能是您在将其放入 RibbonGroup 时看到此内容的原因。尝试为您的 Grid 设置一个 Width 或 MinWidth ,看看是否会有所不同。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 您不需要设置列表框的宽度,因为默认的 Horizo​​ntalAlighnment 设置为拉伸。
    猜你喜欢
    • 2015-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-05
    • 1970-01-01
    • 2017-11-01
    • 1970-01-01
    • 2014-07-17
    相关资源
    最近更新 更多