gpt4 book ai didi

c# - ObservableCollection<> 不会绑定(bind)更改

转载 作者:行者123 更新时间:2023-12-03 10:54:41 25 4
gpt4 key购买 nike

我在 WPF 有一张 table 我绑定(bind)了 ObservableCollection<Message> TableData类型列表Message .我将表格行的样式设置为可以读取消息 StatusColor (更改文本的颜色)。当我将元素添加到 ObservableCollection<Message> 时,这同样有效。但是当我改变 StatusColor更改不会在 UI 中更新。

代码:

public class Message 
{
public string ShortTextMessage { get; set; }
public string StatusColor { get; set; }
}

xml:
<Style x:Key="DataGridRow"  TargetType="{x:Type DataGridRow}">
<Setter Property="Foreground" Value="{Binding StatusColor, Mode=TwoWay}"></Setter>
</Style>

<DataGrid ItemsSource="{Binding TableData}" SelectedItem="{Binding TableData, Mode=TwoWay}" RowStyle="{StaticResource DataGridRow}" SelectionUnit="FullRow">

最佳答案

实现INotifyPropertyChanged为您的类(class) Message :

 public abstract class ViewModelBase : INotifyPropertyChanged
{
#region INotifyPropertyChanged
public event PropertyChangedEventHandler PropertyChanged;

public void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
ValidateAsync();
}
#endregion
}

继承 ViewModelBase :
public class Message:ViewModelBase
{
private string _shortTextMessage;
public string ShortTextMessage
{
get { return _shortTextMessage; }
set
{
_shortTextMessage= value;
OnPropertyChanged();
}
}
private string _statusColor;
public string StatusColor
{
get { return _statusColor; }
set
{
_statusColor= value;
OnPropertyChanged();
}
}
}

那应该行得通。

关于c# - ObservableCollection<> 不会绑定(bind)更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39142901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com