gpt4 book ai didi

c# - ViewModel 中的 ObservableCollection,模型中的列表

转载 作者:行者123 更新时间:2023-11-30 14:54:47 25 4
gpt4 key购买 nike

我正在努力寻找解决必须维护两个列表的问题的方法。

我正在使用 MVVM,但不希望我的模型使用 ObservableCollection。我觉得这是最好的封装,并允许我使用不同的 View /模式(例如控制台)。而不是像这样设置我的结构:

public class MainWindow {
// handled in XAML file, no code in the .cs file
}

public abstract class ViewModelBase : INotifyPropertyChanged {
// handles typical functions of a viewmodel base class
}

public class MainWindowViewModel : ViewModelBaseClass {
public ObservableCollection<Account> accounts { get; private set; }
}

public class Administrator {
public List<Account> accounts { get; set; }

public void AddAccount(string username, string password) {
// blah blah
}
}

我想避免在上述情况下有两个不同的集合/列表。我只希望模型处理数据,而 ViewModel 负责其呈现方式的逻辑。

最佳答案

您可以做的是在您的 Viewmodel 中使用 ICollectionView 来显示您的模型数据。

public class MainWindowViewModel : ViewModelBaseClass {
public ICollectionView accounts { get; private set; }
private Administrator _admin;

//ctor
public MainWindowViewModel()
{
_admin = new Administrator();
this.accounts = CollectionViewSource.GetDefaultView(this._admin.accounts);
}

//subscribe to your model changes and call Refresh
this.accounts.Refresh();

xaml

  <ListBox ItemsSource="{Binding accounts}" />

关于c# - ViewModel 中的 ObservableCollection,模型中的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26876990/

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