2013-05-27 105 views
1

我有一个组合框中的一堆值。选择“列表”时,我想更改组合框的宽度。这里是我当前的xaml:WPF Combobox不调整大小

<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 Property="Visibility" Value="Hidden" /> 

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

+2

在WPF中,您通常不会通过提供固定宽度或高度来布置GUI。当你从一开始就将组合框设置为80时,它是否工作?当你设置宽度时,我怀疑你的布局不会改变。 – nvoigt

回答

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> 
+0

谢谢!这工作:) – VARAK