2011-09-08 53 views
2

我有一個帶有數據網格的日誌窗口,每個條目寫入數據網格中的新行。如何使用不同的顏色設置datagrid中的每一行

我想根據日誌消息的嚴重程度設置行顏色(例如,致命異常=紅色,信息=綠色)。

我該如何處理綁定或動態資源?

在此先感謝!

回答

4

假設這不適用於Silverlight,那麼可以使用DataTriggers。

假設Severity公開爲您的項目屬性...

<Style TargetType="{x:Type toolkit:DataGridRow}"> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding Severity}" Value="High"> 
        <Setter Property="Background" Value="Red"/> 
      </DataTrigger> 
      <DataTrigger Binding="{Binding Severity}" Value="Medium"> 
        <Setter Property="Background" Value="Yellow"/> 
      </DataTrigger> 
      <DataTrigger Binding="{Binding Severity}" Value="Low"> 
        <Setter Property="Background" Value="Green"/> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 

爲Silverlight你應該使用轉換器......

<Style TargetType="{x:Type toolkit:DataGridRow}"> 
     <Setter Property="Background" 
       Value="{Binding Path=Severity, 
           Converter={StaticResource StatusToColorConveter}}"/> 
    </Style> 

在StatusToColorConveter.Convert()方法...

switch(value.toString()) 
    { 
     case "High": return Colors.Red; 
     case "Medium": return Colors.Yellow; 
     case "Low": return Colors.Green; 
    } 

讓我知道這是否有幫助。

+0

謝謝!很好的工作 – Maya

+0

'''''''''''''''''''''''''''''''''''''''''''''''''''''''您將不得不使用數據觸發器'',這是不正確的,除非您確定解決方案集合確實有界(在這種情況下('「必須僅包含一個元素」)),否則我會建議您遠離這種強烈的陳述。 –

+0

@ H.B。,okies。編輯。 –

相關問題