gpt4 book ai didi

c# - ItemsSource 绑定(bind)不更新值

转载 作者:行者123 更新时间:2023-11-30 18:56:28 25 4
gpt4 key购买 nike

我需要列出项目。我将用户集合绑定(bind)到列表框。一切正常,但列表框中的项目不会实时更新。它们根本不会被这个绑定(bind)更新。因此,当我从列表中删除任何用户时,即使正确更改了列表框的来源,列表框也不会更新。

源位于数据 View 模型中的路径 DataViewModel.Instance.AllUsers;每当我将新项目添加到此列表或删除一个项目时,布局都不会更新。其他绑定(bind)工作良好。我尝试更新列表框布局、引发源更新事件、添加/删除项目的其他方式,但没有任何效果。

我尝试调试绑定(bind),但绑定(bind)太多,无法找到错误。

提前感谢您提供任何有用的建议。

列表框:

<ListBox x:Name="ListboxUsers" ItemsSource="{Binding Path=AllUsers, Mode=OneWay}" Grid.Column="1" Margin="0" Grid.Row="5" Background="DimGray" BorderThickness="0" Visibility="Hidden" SelectionChanged="ListboxUsers_SelectionChanged"/>

代码隐藏:

CatalogueGrid.DataContext = DataViewModel.Instance;    //whole view model added as datacontext

数据 View 模型类:

public class DataViewModel : INotifyPropertyChanged
{
private static DataViewModel _dataViewModel;

private Collection<UserModel> allUsers;
public Collection<UserModel> AllUsers
{
get
{
return allUsers;
}
set
{
allUsers = value;
NotifyPropertyChanged("AllUsers");
}
}


private DataViewModel()
{
AllUsers = new Collection<UserModel>();
}

public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(string info)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(info));
}
}
.
.
.

}

最佳答案

如果 Collection 实现了 INotifyCollectionChanged 接口(interface),则使用 ObservableColLection :

private ObservableCollection<UserModel> allUsers;
public ObservableCollection<UserModel> AllUsers
{
get
{
return allUsers;
}
set
{
allUsers = value;
NotifyPropertyChanged("AllUsers");
}
}

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

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