2011-11-28 31 views
1

改变DataGrid行的颜色,我想通过可能的话结合实现follwing ...如何,如果记录被改变

我有一个WPF的DataGrid绑定到一个ObservableCollection

public class Product 
{ 
    public string Code { get; set; } 
    public string Desc { get; set; } 
    public bool Updated { get; set; } 
} 

我网格的DataContext被设置为可观察集合。

我想达成什么......

  • 当用户在DataGrid改变行产品的更新字段被更改为“true”。
  • 由于这个原因,我可以以某种方式绑定网格的行颜色以显示不同的颜色,这将向用户指示该行尚未保存。

认为,我将需要执行INotifyPropertyChanged做到这一点,但并不一定就究竟是如何做到这一点。此外,网格上是否存在绑定属性以确保UI上所做的更改更新后备存储?

干杯。

+1

然而,更多的财产滥用,使用的事件,如果你有一个事件... –

+0

好吧,如果我在网格中有100个项目,怎么能我“听”可能有任何物品引发的事件。如何连接可以检测后备存储中任何更改的处理程序? – Remotec

+0

那么,这是一个问题,现有的WPF功能只支持属性,如果你想保持你的设计清洁,并且可能需要使用其他库,比如[Blend SDK]中的'Interactivity'(http:///www.microsoft.com/download/en/details.aspx?id=10801)。它的['EventTrigger'](http://msdn.microsoft.com/en-us/library/system.windows.interactivity.eventtrigger_members%28v=Expression.40%29.aspx)比.NET中的更灵活。 –

回答

3
  1. Product类应该implementINPC所以绑定Updated被更新。

    您还可以更改所有属性的设置程序以将Updated设置为true

  2. 您可以在属性触发:

    <DataGrid.RowStyle> 
        <Style TargetType="DataGridRow"> 
         <Style.Triggers> 
          <DataTrigger Binding="{Binding Updated}" Value="True"> 
           <Setter Property="Background" Value="Orange"/> 
          </DataTrigger> 
         </Style.Triggers> 
        </Style> 
    </DataGrid.RowStyle> 
    
相关问题