2017-08-20 3 views
0

In Resources.Xaml iWPF auslösen nicht wirksam auf Stil in Code eingestellt

<Style TargetType="DataGridCell" > 
    <Style.Triggers> 
     <Trigger Property="DataGridCell.IsSelected" Value="True"> 
      <Setter Property="Background" Value="CornflowerBlue" /> 
      <Setter Property="Foreground" Value="White" /> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

in einem bestimmten Datenraster Spalte einen Stil aus Datagrid-Zelle gesetzt i manuell den Vordergrund gesetzt

Sub New() 
     FontWeight = FontWeights.Bold 
     Foreground = Brushes.Blue 
End Sub 

wenn die Zelle ausgewählt ist, ändert sich die Hintergrunddosis durch den Trigger, aber der Vordergrund enthält keine

ich glaube, dass es aufgrund der Tatsache ist, dass ich den forground in Code

einstelle

was kann ich tun, um dies zu lösen?

Anmerkung: Ich kann die Foregroud für die Spalte in XAML festlegen

Antwort

1

Schreiben Foreground = Brushes.Blue Sie lokalen Wert für den Vordergrund Abhängigkeitseigenschaft festgelegt. Der lokale Wert hat eine höhere Priorität als der Setter-Wert von Trigger. Ich würde Sie raten, einen benannten Stil für Datagridcell zu erstellen, aus Basis-Stil abgeleitet, und abgeleiteten Stil in Code anwenden:

<Style TargetType="DataGridCell" > 
    <Style.Triggers> 
     <Trigger Property="DataGridCell.IsSelected" Value="True"> 
      <Setter Property="Background" Value="CornflowerBlue" /> 
      <Setter Property="Foreground" Value="White" /> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

<Style x:Key="BlueCell" TargetType="DataGridCell" BasedOn="{x:Type DataGridCell}"> 
    <Setter Property="Foreground" Value="Blue" /> 
    <Setter Property="FontWeight" Value="Bold" /> 
</Style> 
Sub 
    CellStyle = (Style)datagrid.FindResource("BlueCell"); 
End Sub 

Ich bin C# Syntax wegen meines Mangels an vb.net Wissen . Code FindResource Methode von Datagrid ruft „Bluecell“ -Stil retrive und nach Umwandlung in Style Art ist es zu Cellstyle einer Spalte zugewiesen

+0

Danke, es hat mich in die richtige Richtung –

+0

@YonatanTuchinsky, groß. Fühlen Sie sich frei, eine Verbesserung zu dieser Antwort vorschlagen (vorschlagen, "bearbeiten"), wenn Sie etwas erheblich ändern mussten, damit die Dinge funktionieren – ASh

+1

Ich tat, was Sie mit wenigen Änderungen vorgeschlagen, igave den ursprünglichen Stil einen Schlüssel und basierend auf diesem Schlüssel - ich fügte es auch der Anwendung Resouces.xaml hinzu und bekam die Ressourcen von dort 'Application.Current.Resources (" NewStyle ")' –