如何将网格列中的WPF Combox的宽度限制为该列中最宽标签的宽度?

时间:2017-07-01 17:05:36

标签: wpf xaml

我有2列,它们在Grid列中都有2个组合框和2个标签。现在根据语言,标签中的任何一个都可以是最宽的。我希望所有控件的宽度与最宽的Label相同。组合框文本太宽,无法完全显示。怎么做的?

简化示例代码:

<Grid.ColumnDefinitions>
    <ColumnDefinition Width="Auto"/>
    <ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
    <RowDefinition Height="Auto"/>
    <RowDefinition Height="Auto"/>
    <RowDefinition Height="Auto"/>
    <RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Label Content="{DynamicResource LineAndTextColor}" Name="LineAndTextColorLabel"  Grid.Column="0" Grid.Row="0"/>
<Label Content="{DynamicResource Linetype}" Name="LineTypeLabel" Grid.Column="1" Grid.Row="0"/>
<ComboBox Grid.Column="0" Grid.Row="1" ItemsSource="{Binding Colors}"/>
<ComboBox Grid.Column="1" Grid.Row="1" ItemsSource="{Binding LineTypes}"/>
<Label Content="{DynamicResource FillColor}" Name="FillColorLabel" Grid.Column="0" Grid.Row="2" />
<Label Content="{DynamicResource Linesize}" Name="LineWidthLabel"  Grid.Column="1" Grid.Row="2"/>
<ComboBox Grid.Column="0" Grid.Row="3" ItemsSource="{Binding Colors}"/>
<ComboBox Grid.Column="1" Grid.Row="3" ItemsSource="{Binding LineWidths}" />

补充说明:

我希望列中的所有组合框与相同宽度的THAT列的最宽标签相同。因此,对于两个列,THAT列的最宽标签确定THAT列的组合框的宽度。我需要限制Combobox宽度,因为它们有很长的字符串。

1 个答案:

答案 0 :(得分:0)

每列中的

标签都被拉伸,因此宽度相等。要将组合框限制为相同的宽度,请为其中的ech添加maxWidth设置:

左栏中的组合框:

MaxWidth="{Binding Path=ActualWidth, ElementName=FillColorLabel}"