【发布时间】:2019-06-28 12:04:11
【问题描述】:
我又在 MVVM 上苦苦挣扎。我已经阅读了一些教程,但我的问题仍然存在......
我正在尝试在我的项目中使用 MVVM,并且需要在我的 MainWindows.xaml.cs 中使用我的 ObservableCollection(在 ViewModel 中创建)。
我有一个模型:
public class MvItems : INotifyPropertyChanged
{
private string mvName;
public string MvName
{
get { return mvName; }
set
{
mvName = value;
OnPropertyChanged(nameof(MvName));
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
还有一个 ViewModel:
public class MVViewModel
{
public ObservableCollection<MvItems> Mailverteiler { get { return _Mailverteiler; } }
public ObservableCollection<MvItems> _Mailverteiler = new ObservableCollection<MvItems>();
public void LoadMv()
{
ObservableCollection<MvItems> temp = new ObservableCollection<MvItems>();
temp.Add(new MvItems { MvName = "ASD" });
temp.Add(new MvItems { MvName = "BLA" });
temp.Add(new MvItems { MvName = "MUH" });
_Mailverteiler = temp;
}
}
查看: 现在我可以通过
从我的 MainWindows.xaml.cs 添加数据zTiredV2.ViewModel.MVViewModel MVObject = new zTiredV2.ViewModel.MVViewModel();
MVObject.LoadMv();
lvMailverteiler.DataContext = MVObject;
然后我看到“ASD”、“BLA”和“MUH”。但是,当我按下另一个按钮时,我现在如何才能访问它们?
需要这样的东西:
foreach (MvItems mvitem in Mailverteiler)
{
if (mvitem.IsChecked == true)
{
await this.ShowMessageAsync("Mailverteiler", mvitem.MvName, MessageDialogStyle.Affirmative);
}
}
我怎样才能在列表中再添加 1 个项目?
【问题讨论】:
-
添加新项目就像将其添加到
Mailverteiler一样简单。顺便说一句,支持字段不应该是public并且可能是readonly,而是考虑使用带有初始化程序的仅 getter 自动属性。 -
谢谢!添加真的很容易......
MVObject._Mailverteiler.Add(new zTiredV2.Model.MvItems { MvName = group.DisplayName, IsChecked=false });但是我如何访问列表并稍后添加另一个项目? -
好吧,我是个白痴 :D 我可以在我的 MainWindows.xaml.cs 中使用
public zTiredV2.ViewModel.MVViewModel MVList = new zTiredV2.ViewModel.MVViewModel(); public zTiredV2.ViewModel.MaViewModel MAList = new zTiredV2.ViewModel.MaViewModel();并使用它......然后像这样迭代:foreach (zTiredV2.Model.MvItems mvitem in MVList.Mailverteiler)