2016-07-11 16 views
-2
ist

ich dieses Datagrid haben, und ich habe mit der Einstellung der Hintergrundfarbe der ausgewählten Zellen gespielt:ändern Hintergrundfarbe der Zellen, wenn der Wert größer als oder gleich

<DataGridTextColumn Header="Next Study" Binding="{Binding NextStudy}"> 
    <DataGridTextColumn.ElementStyle> 
     <Style TargetType="{x:Type TextBlock}"> 
      <Style.Triggers> 
       <Trigger Property="Text" Value="25"> 
        <Setter Property="Background" Value="Red"/> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </DataGridTextColumn.ElementStyle> 
    <DataGridTextColumn.CellStyle> 
     <Style TargetType="{x:Type DataGridCell}"> 
      <Setter Property="ToolTip" Value="{Binding NextStudyDescription}" /> 
     </Style> 
    </DataGridTextColumn.CellStyle> 
</DataGridTextColumn> 

Es funktioniert wie Sie sehen können:

Highlighted cells

Aber das ist nicht wirklich was ich will. Stattdessen würde Ich mag alle Zellen markieren, wo der Wert größer als oder gleich 18 Also habe ich versucht:

<DataGridTextColumn Header="Next Study" Binding="{Binding NextStudy}"> 
    <DataGridTextColumn.ElementStyle> 
     <Style TargetType="{x:Type TextBlock}"> 
      <Style.Triggers> 
       <DataTrigger Binding="{NextStudy Converter={StaticResource IsEqualOrGreaterThanConverter}, ConverterParameter=18}" Value="True"> 
        <Setter Property="Background" Value="Red"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </DataGridTextColumn.ElementStyle> 
    <DataGridTextColumn.CellStyle> 
     <Style TargetType="{x:Type DataGridCell}"> 
      <Setter Property="ToolTip" Value="{Binding NextStudyDescription}" /> 
     </Style> 
    </DataGridTextColumn.CellStyle> 
</DataGridTextColumn> 

Es mag nicht: <DataTrigger Binding="{NextStudy

Außerdem würde ich gerne, dies zu tun Hintergrundtest, wenn das Element comboActiveStudentAssignmentType ausgewählter Index 0, 1 oder 2 ist. Andernfalls muss diese Hervorhebung nicht durchgeführt werden.

Danke.

+2

'NextStudy Converter =' 'sollte Binding-Pfad sein = NextStudy, Converter =' (Sie das Komma und Binding Schlüsselwort fehlten). Versuchen Sie das und es wird fast sicher funktionieren. – BradleyDotNET

+0

Großartig! Bitte wandle das in eine Antwort um ... :) –

+0

@BradleyDotNET Ich kann nicht glauben, dass ich das verpasst habe. Ich habe zu lange auf den Bildschirm geschaut. Vielen Dank. –

Antwort

1

Sie haben einen Syntaxfehler: Binding der Eigenschaftsname ist, haben Sie immer noch es als Was den zweiten Teil der Frage Binding

<DataTrigger Binding="{Binding NextStudy, Converter={StaticResource IsEqualOrGreaterThanConverter}, ConverterParameter=18}" Value="True"> 

zu erklären, können Sie einen MultiDataTrigger verwenden können. Die Bedingungen in dem MultiDataTrigger müssen ALLE für den Trigger erfüllen, um die Setter auszuführen. Sie müssen wahrscheinlich einen anderen Konverter schreiben, um Ihren AssignmentType in True/False umzuwandeln, und Sie sollten eingestellt werden. Hier ist ein kurzes Beispiel:

<MultiDataTrigger> 
    <MultiDataTrigger.Conditions> 
     <Condition Binding="{Binding NextStudy, Converter={StaticResource IsEqualOrGreaterThanConverter}, ConverterParameter=18}" Value="True"/> 
     <Condition Binding="{Binding comboActiveStudentAssignmentType, Converter={StaticResource YourOtherConverter}" Value="True"/> 
    </MultiDataTrigger.Conditions> 
    <MultiDataTrigger.Setters> 
     <Setter Property="Background" Value="Red"/> 
    </MultiDataTrigger.Setters> 
</MultiDataTrigger> 
+0

Vielen Dank. –