gpt4 book ai didi

c# - WPF 绑定(bind)更新

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

谁能解释为什么我不能使用 重置绑定(bind)数据?

使用 MVVM,Data 绑定(bind)到 ListBox。

DataList 已经实现了 INotifyPropertyChanged。

在方法 OnChange()

public void OnChange()
{
data = new ObservableCollection<DataList>(); // not work
data.Add(new DataList() { Text = "Changed 1" });
data.Add(new DataList() { Text = "Changed 2" });
}


public void OnChange()
{
data.Clear(); // works fine
data.Add(new DataList() { Text = "Changed 1" });
data.Add(new DataList() { Text = "Changed 2" });
}

View 模型
ObservableCollection<DataList> data;
public ObservableCollection<DataList> Data
{
get { return data; }
set { data = value; }
}

public ViewModel()
{
this.Command_OnChange = new RelayCommand(ExecuteCommand1, CanExecuteCommand);

data = new ObservableCollection<DataList>();
data.Add(new DataList() { Text = "Default 1" });
data.Add(new DataList() { Text = "Default 2" });
}

public void OnChange()
{
data.Add(new DataList() { Text = "Changed 1" });
data.Add(new DataList() { Text = "Changed 2" });
}

最佳答案

因为当您更改支持字段时,wpf 无法知道更改。

事实上,你可以用 ObservableCollection 的新实例覆盖变量。 ,但你必须实现 INotifyPropertyChanged在您的 ViewModel也上课。

private ObservableCollection<DataList> data;
public ObservableCollection<DataList> Data
{
get { return data; }
set
{
data = value;
OnPropertyChanged("Data");
}
}

在你的 OnChange 方法中
public void OnChange()
{
Data = new ObservableCollection<DataList>();//Note the use of Data property not field
Data.Add(new DataList() { Text = "Changed 1" });
Data.Add(new DataList() { Text = "Changed 2" });
}

关于c# - WPF 绑定(bind)更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32264033/

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