WPF Combobox没有调整大小

VAR*_*RAK 1 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>
Run Code Online (Sandbox Code Playgroud)

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

如果我将Setter更改为:

<Setter Property="Visibility" Value="Hidden" />
Run Code Online (Sandbox Code Playgroud)

然后在选择"列表"时隐藏组合框.为什么它不适合宽度?

Sph*_*xxx 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>
Run Code Online (Sandbox Code Playgroud)