2017-03-08 5 views
1

Hallo, ich mache ein WPF-Programm. Aber ich habe ein Problem mit ComboBoxComboBoxItem zeigt nicht nach dem Anwenden von Stil auf ComboBox

Ich brauche eine Combo-Box-Stil wie dieser Code.

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

Dieser Code funktioniert gut.

Nach dem Teilen von Stil und Ansicht funktioniert dieser Code nicht.

Eigentlich der Stil auf ComboBox angewendet, aber ComboBoxItems nicht angezeigt.

Was ist das Problem?

Stil Teil

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

anzeigen Teil

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

Antwort

0

So erstellen Sie einen ganzen Stil, mit nur einem Setter. Und Sie verwenden diesen Setter, um Ihre Combobox-Vorlage durch eine Vorlage zu ersetzen, die eine andere Combobox enthält, die alle gewünschten Eigenschaften aufweist, aber keine Anstrengungen unternimmt, sich selbst mit den untergeordneten Elementen der reemplatierten Combobox zu füllen. Natürlich gibt es keine Kinder in dieser Combobox; du hast es nie gegeben. Und es ist nicht notwendig, eine neue Vorlage zu erstellen, nur um die Höhe und den Umfang festzulegen. Vorlagen sind schwere Artillerie und Sie brauchen das nicht für einen einfachen Stil wie diesen.

Verwenden Sie Style-Setter, um die Eigenschaften festzulegen, die Sie festlegen möchten, und nicht das gesamte Steuerelement. Wie so:

<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

Vielen Dank! Es ist sehr nützlich! –

Verwandte Themen