WPF ToolKit Datagrid刷新绑定

问题描述:

在我的数据网格上我有一个DataTrigger决定设置前景(文本)的颜色。该值将作为我的页面的属性进行存储。WPF ToolKit Datagrid刷新绑定

我已经得到了这个所有工作很好,但现在我给用户的功能来设置自己的颜色。

我的问题是,当这种颜色是由用户设置,我更新属性如何使数据网格现在反映这种变化。

的什么,我下面做的例子(PrivateMessages是显示不同的颜色)

<DataTrigger Binding="{Binding Path=IsPrivate}" Value="True">          
    <Setter Property="Foreground" Value="{Binding ElementName=GridPage, Path=PrivateMessageColour}" /> 
</DataTrigger> 

任何帮助或指导,将最赞赏。

在此先感谢。

确保您的类型实现了INotifyPropertyChanged接口和你火在其上DataTrigger势必在修改颜色到您的公开暴露setter方法的变更通知。

编辑:下面是使用TextBoxButton来改变颜色的例子...

C#:

public partial class Window1 : Window 
{ 
    MyData _data = new MyData(); 

    public Window1() 
    { 
     InitializeComponent(); 

     this.DataContext = _data; 
    } 

    private void Button_Click(object sender, RoutedEventArgs e) 
    { 
     _data.ChangeColor(); 
    } 
} 

    public class MyData : INotifyPropertyChanged 
    { 
     Random _rand = new Random(); 
     List<String> _colors = new List<string> { "Red", "Black", "Blue" }; 

     public void ChangeColor() 
     { 
      MyColor = _colors[_rand.Next(0, 3)]; 
     } 

     private bool _isActive = true; 
     public bool IsActive 
     { 
      get 
      { 
       return _isActive; 
      } 
      set 
      { 
       _isActive = value; 
       PropertyChangedEventHandler h = PropertyChanged; 
       if (h != null) 
        h(this, new PropertyChangedEventArgs("IsActive")); 
      } 
     } 


     private String _myColor = "Green"; 
     public String MyColor 
     { 
      get 
      { 
       return _myColor; 
      } 
      set 
      { 
       _myColor = value; 
       PropertyChangedEventHandler h = PropertyChanged; 
       if (h != null) 
        h(this, new PropertyChangedEventArgs("MyColor")); 
      } 
     } 

     #region INotifyPropertyChanged Members 

     public event PropertyChangedEventHandler PropertyChanged; 

     #endregion 
    } 
} 

XAML:

<Grid> 
     <Button Height="25" Click="Button_Click" Content="Change Color" VerticalAlignment="Bottom" /> 
     <TextBox Width="200" Height="100"> 
      <TextBox.Style> 
       <Style> 
        <Style.Triggers> 
         <DataTrigger Binding="{Binding IsActive}" Value="true"> 
          <Setter Property="TextBox.Background" Value="{Binding MyColor}"/> 
         </DataTrigger> 
        </Style.Triggers> 
       </Style> 
      </TextBox.Style> 
     </TextBox> 
    </Grid> 
+0

感谢这个收集数据触发器正在努力实现INotifyPropertyChanged它的设置我有问题,会受益于有他的财产也使用这个? – Emlyn 2011-02-15 20:13:59