WPF Combobox没有调整大小

时间:2013-05-27 12:02:17

标签: wpf xaml

我有一个带有一堆值的组合框。我想在选择“列表”时更改组合框的宽度。这是我目前的xaml:

<ComboBox Name="DataTypeSelector" ItemsSource="{Binding ElementName=DataItemsBuildWindow, Path=DataContext.Types}" SelectedValue="{Binding DataType}" HorizontalAlignment="Stretch" Width="160">
    <ComboBox.Style>
        <Style TargetType="ComboBox">
            <Style.Triggers>
                <DataTrigger Value="List" Binding="{Binding SelectedValue, ElementName=DataTypeSelector, Converter={StaticResource ToStringConverter}}">
                    <Setter Property="Width" Value="80" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </ComboBox.Style>
</ComboBox>

由于某种原因,这不起作用。

如果我将Setter更改为:

<Setter Property="Visibility" Value="Hidden" />

然后在选择“列表”时隐藏组合框。为什么它不适用于宽度?

1 个答案:

答案 0 :(得分:5)

在元素上显式设置的属性(此处为:Width="160")将覆盖所有样式。您还需要将默认宽度(160)移动到您的Style中:

<ComboBox Name="DataTypeSelector" 
          ItemsSource="{Binding ElementName=DataItemsBuildWindow, Path=DataContext.Types}" 
          SelectedValue="{Binding DataType}" 
          HorizontalAlignment="Stretch" >
    <ComboBox.Style>
        <Style TargetType="ComboBox">
            <Setter Property="Width" Value="160" />
            <Style.Triggers>
                <DataTrigger Value="List" Binding="{Binding SelectedValue, ElementName=DataTypeSelector, Converter={StaticResource ToStringConverter}}">
                    <Setter Property="Width" Value="80" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </ComboBox.Style>
</ComboBox>