gpt4 book ai didi

wpf - MVVM 和(动态地)从另一个组合框的值填充一个组合框

转载 作者:行者123 更新时间:2023-12-01 15:08:49 25 4
gpt4 key购买 nike

我有一个包含两个组合框的表单。其中一个正在填充来自 ViewModel 中的集合的对象。当我在此 ComboBox 中选择一个值时,它应该填充第二个 ComboBox。

我想知道填充第二个 ComboBox 的最佳方法是什么。我认为再收集一个包含 ViewModel 中第一个 ComboBox 的选定值的详细信息的集合可能有点浪费。我认为最好的方法可能是用选定的值访问数据库,收集相应的详细信息,然后将它们发回。我认为如何工作是让详细信息 ComboBox 与“主”ComboBox 绑定(bind),以便它可以获得选定的值。然后理想情况下,详细信息 ComboBox 会以某种方式从数据库中获取值。

问题是我只是不知道如何使用 MVVM 实现它,任何帮助将不胜感激!

最佳答案

一旦所选项目发生变化,只需调用详细信息集合的 OnPropertyChanged

您可以预先填充一个后台字典,其键是可能的主条目,其值是明细列表的列表。

注意下面的工作 ViewModel 必须实现 INotifyPropertyChanged

例如

public class MyViewModel : INotifyPropertyChanged
{
public IEnumerable<MasterOption> MasterList {get;set;}
public IEnumerable<DetailOption> DetailList {get;set;}
Dictionary<MasterOption,List<DetailOption>> DetailLookup;
MasterOption _SelectedMasterOption;
public MasterOption SelectedMasterOption
{
get { return _SelectedMasterOption;}
set
{
_SelectedMasterOption = value;
LoadDetailsList();
OnPropertyChanged("SelectedMasterOption");
}

void LoadDetailsList()
{
InitDictionary();
if (DetailLookup.ContainsKey(SelectedMasterOption))
DetailList = DetailLookup[SelectedMasterOption];
else
DetailList = null;

OnPropertyChanged("DetailList");
}
void InitDictionary()
{
if (DetailLookup == null)
{
//Grab fill the lookup dictionary with information
}
}
}

关于wpf - MVVM 和(动态地)从另一个组合框的值填充一个组合框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5703079/

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