1

我有一个包含一堆值的组合框。我想在选择“列表”时更改组合框的宽度。这是我当前的 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" />

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

4

1 回答 1

5

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

<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>
于 2013-05-27T12:10:37.280 回答