2017-03-08 41 views
1

您好我正在製作一個WPF程序。但我有一個組合框的問題ComboBoxItem在應用樣式到組合框後不顯示

我需要像這樣的代碼組合框樣式。

<ComboBox Height="28" Background="White" VerticalContentAlignment="Center" Width="120"> 
    <ComboBox.BorderBrush> 
     <LinearGradientBrush EndPoint="0,20" MappingMode="Absolute"> 
      <GradientStop Color="#FFABADB3" Offset="0.05"/> 
      <GradientStop Color="#FFE2E3EA" Offset="0.07"/> 
     </LinearGradientBrush> 
    </ComboBox.BorderBrush> 
    <ComboBoxItem Content="Content1" IsSelected="True"/> 
    <ComboBoxItem Content="Content2"/> 
</ComboBox> 

此代碼運行良好。

分割樣式和視圖後,此代碼不起作用。

實際上應用於ComboBox但ComboBoxItems的樣式不顯示。

什麼問題?

風格一部分

<Style x:Key="ComboBoxLikeTextBox" TargetType="{x:Type ComboBox}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="ComboBox"> 
       <ComboBox Height="28" Background="White" VerticalContentAlignment="Center"> 
        <ComboBox.BorderBrush> 
         <LinearGradientBrush EndPoint="0,20" MappingMode="Absolute"> 
          <GradientStop Color="#FFABADB3" Offset="0.05"/> 
          <GradientStop Color="#FFE2E3EA" Offset="0.07"/> 
         </LinearGradientBrush> 
        </ComboBox.BorderBrush> 
       </ComboBox> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

查看部分

<ComboBox Style="{DynamicResource ComboBoxLikeTextBox}"> 
    <ComboBoxItem Content="Content1" IsSelected="True"/> 
    <ComboBoxItem Content="Content2"/> 
</ComboBox> 

回答

0

因此,您創建一個整體風格,只有一個二傳手。然後你使用該setter來替換你的組合框模板,該模板包含一個不同的組合框,它具有你想要的所有屬性,但沒有努力用retemplated組合框的子組件填充自己。當然,那個組合框裏沒有孩子。你從來沒有給過它。而且不需要創建一個新的模板來設置高度和內容。模板是重型火炮,你不需要這樣的簡單風格。

使用樣式設置器來設置您要設置的屬性,而不是對整個控件進行覈對。像這樣:

<Style TargetType="ComboBox" x:Key="ComboBoxLikeTextBox"> 
    <Setter Property="Height" Value="28" /> 
    <Setter Property="VerticalContentAlignment" Value="Center" /> 
    <Setter Property="Width" Value="120" /> 
    <Setter Property="BorderBrush"> 
     <Setter.Value> 
      <LinearGradientBrush EndPoint="0,20" MappingMode="Absolute"> 
       <GradientStop Color="#FFABADB3" Offset="0.05"/> 
       <GradientStop Color="#FFE2E3EA" Offset="0.07"/> 
      </LinearGradientBrush> 
     </Setter.Value> 
    </Setter> 
</Style> 
+1

非常感謝!這非常有用! –