WPF工具包数据网格刷新绑定
在我的datagrid上,我有一个DataTrigger,它决定将前景文本设置为哪种颜色。此值存储为“我的页面”的属性 我已经让这一切工作得很好,但现在我给用户的功能,以设置这个颜色自己 我的问题是,当用户设置此颜色时,我更新属性如何使datagrid现在反映此更改 下面是我正在做的事情的一个例子,私人信息以不同的颜色显示WPF工具包数据网格刷新绑定,wpf,data-binding,datagrid,wpftoolkit,Wpf,Data Binding,Datagrid,Wpftoolkit,在我的datagrid上,我有一个DataTrigger,它决定将前景文本设置为哪种颜色。此值存储为“我的页面”的属性 我已经让这一切工作得很好,但现在我给用户的功能,以设置这个颜色自己 我的问题是,当用户设置此颜色时,我更新属性如何使datagrid现在反映此更改 下面是我正在做的事情的一个例子,私人信息以不同的颜色显示 <DataTrigger Binding="{Binding Path=IsPrivate}" Value="True">
<DataTrigger Binding="{Binding Path=IsPrivate}" Value="True">
<Setter Property="Foreground" Value="{Binding ElementName=GridPage, Path=PrivateMessageColour}" />
</DataTrigger>
任何帮助或指导都将不胜感激
提前感谢。请确保您的类型实现了接口,并且在修改颜色时,您在公开属性的setter上触发了DataTrigger绑定到的更改通知 编辑:下面是一个使用文本框和按钮更改颜色的示例 C: XAML:
感谢datatrigger正在处理的集合实现InotifyProperty将其更改为我遇到问题的setter,让属性也使用它会有好处吗?@Emlyn根据您发布的代码,IsPrivate属性是需要触发PropertyChanged事件通知的源属性。谢谢您的输入,但我觉得我开始偏离正轨了。我只是需要某种方法,也许可以使网格检查文本应该显示在哪种颜色,并重新绘制自己,如果这已经改变。我会看看他们是否是实现这些触发器的更好方法,因为我感觉可能还需要一个事件触发器。@Emlyn使用文本框和按钮来更改颜色,添加了功能齐全的示例;你应该能够适应你的需要。谢谢这个例子,我不确定我是否已经说清楚了。这个私有消息颜色属性独立于我的消息集合,只是wpf窗口上的一个属性。如果我有机会,我会减少我的项目,看看我是否可以在这里张贴一个例子。再次感谢您的所有意见。
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
}
}
<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>