2010-08-19 63 views
1

我試圖重新創建在Windows資源管理器中看到的WPF中的組合框樣式。我試圖創建類似於'Arrange by:'組合框的東西,例如在Libraries-> Documents下。直到您將鼠標懸停在組合框上,並且單擊後,組合框纔會顯示一個允許進行單個選擇的上下文菜單。WPF中的Windows 7樣式組合框

回答

0

您可以覆蓋默認模板。如果組合框具有焦點,則使用觸發器來指定要使用哪個模板。

例如:

<Style TargetType="{x:Type ComboBox}"> 
    <Setter Property="Template" Value="{StaticResource TemplateWhenFocused}" /> 
    <Style.Triggers> 
     <MultiTrigger> 
      <MultiTrigger.Conditions> 
       <Condition Property="IsMouseOver" Value="False" /> 
       <Condition Property="IsFocused" Value="False" /> 
      </MultiTrigger.Conditions> 
      <Setter Property="Template" Value="{StaticResource TemplateWhenNotFocused}" /> 
     </MultiTrigger> 
    </Style.Triggers> 
</Style> 

實施例非聚焦模板。可能需要調整邊距以避免文本在切換焦點或離開物體時發生「跳躍」。

<ControlTemplate TargetType="{x:Type ComboBox}" x:Key="StyleWhenNotFocused"> 
    <TextBlock Text="{TemplateBinding Text}" 
       Foreground="{TemplateBinding Foreground}" 
       Background="{TemplateBinding Background}" 
       Padding="{TemplateBinding Padding}" 
       Margin="2,0,2,0" /> 
</ControlTemplate>