我有一个带有一堆值的组合框。我想在选择“列表”时更改组合框的宽度。这是我目前的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" />
然后在选择“列表”时隐藏组合框。为什么它不适用于宽度?
答案 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>