2013-05-27 143 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