WPF工具包数据网格刷新绑定

WPF工具包数据网格刷新绑定,wpf,data-binding,datagrid,wpftoolkit,Wpf,Data Binding,Datagrid,Wpftoolkit,在我的datagrid上,我有一个DataTrigger,它决定将前景文本设置为哪种颜色。此值存储为“我的页面”的属性 我已经让这一切工作得很好,但现在我给用户的功能,以设置这个颜色自己 我的问题是,当用户设置此颜色时,我更新属性如何使datagrid现在反映此更改 下面是我正在做的事情的一个例子,私人信息以不同的颜色显示 <DataTrigger Binding="{Binding Path=IsPrivate}" Value="True">

在我的datagrid上,我有一个DataTrigger,它决定将前景文本设置为哪种颜色。此值存储为“我的页面”的属性

我已经让这一切工作得很好,但现在我给用户的功能,以设置这个颜色自己

我的问题是,当用户设置此颜色时,我更新属性如何使datagrid现在反映此更改

下面是我正在做的事情的一个例子,私人信息以不同的颜色显示

<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>