2011-08-11 67 views
0

我對綁定和WPF一般都很陌生。在WPF中,將綁定行的顏色更改爲DataGrid

現在我在我的XAML視圖中創建了一個DataGrid。然後我創建了兩個DataGridTextColumns

DataGridTextColumn col1 = new DataGridTextColumn(); 
     col1.Binding = new Binding("barcode"); 

然後我將這些列添加到dataGrid中。當我想以一個新的項目添加到數據網格,我可以做,

dataGrid1.Items.Add(new MyData() { barcode = "barcode", name = "name" }); 

這是偉大的,工作正常(我知道有很多方法可以做到這一點,但是這是最簡單的我現在)。

但是,當我嘗試做下一件事情時,問題會發生;

我想將這些項目添加到dataGrid,但根據特定條件使用不同的前景顏色。即 -

if (aCondition) 
    dataGrid.forgroundColour = blue; 
    dataGrid.Items.Add(item); 
+0

我建議你創建儘可能在XAML,例如列。 –

回答

3

使用觸發器例如:

<DataGrid.RowStyle> 
    <Style TargetType="{x:Type DataGridRow}"> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding ACondition}" Value="True"> 
       <Setter Property="TextElement.Foreground" Value="Blue" /> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 
</DataGrid.RowStyle> 

對於這個工作你的課程項目需要有一個叫做ACondition屬性。

編輯:一個例子(假設你可能想在運行時更改屬性,從而實現INotifyPropertyChanged

public class MyData : INotifyPropertyChanged 
{ 
    private bool _ACondition = false; 
    public bool ACondition 
    { 
     get { return _ACondition; } 
     set 
     { 
      if (_ACondition != value) 
      { 
       _ACondition = value; 
       OnPropertyChanged("ACondition"); 
      } 
     } 
    } 

    //... 

    public event PropertyChangedEventHandler PropertyChanged; 

    protected virtual void OnPropertyChanged(string propertyName) 
    { 
     if (this.PropertyChanged != null) 
     { 
      this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
     } 
    } 
} 
+0

非常感謝。但是,你能給我一個在這種情況下工作的財產的例子('ACondition') – MichaelMcCabe

+0

非常感謝你:) – MichaelMcCabe

+0

增加了一個例子;很高興幫助:) –