我对绑定很新,而且一般都是WPF。
现在我在XAML视图中创建了一个DataGrid。然后我创建了两个DataGridTextColumns
DataGridTextColumn col1 = new DataGridTextColumn();
col1.Binding = new Binding("barcode");
然后我将列添加到dataGrid。当我想向datagrid添加一个新项目时,我可以这样做,
dataGrid1.Items.Add(new MyData() { barcode = "barcode", name = "name" });
这很棒并且工作正常(我知道有很多方法可以做到这一点,但现在这对我来说是最简单的。)
然而,当我尝试做下一件事时问题就出现了;
我想将这些项添加到dataGrid,但根据特定条件使用不同的前景颜色。我 -
if (aCondition)
dataGrid.forgroundColour = blue;
dataGrid.Items.Add(item);
答案 0 :(得分: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));
}
}
}