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方法的变更通知。
编辑:下面是使用TextBox
和Button
来改变颜色的例子...
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>
感谢这个收集数据触发器正在努力实现INotifyPropertyChanged它的设置我有问题,会受益于有他的财产也使用这个? – Emlyn 2011-02-15 20:13:59