填充和绑定两个组合框WPF Caliburn.micro

填充和绑定两个组合框WPF Caliburn.micro,wpf,binding,combobox,caliburn.micro,dapper,Wpf,Binding,Combobox,Caliburn.micro,Dapper,我有这张桌子: 我在我的项目中使用这个名为NewItem的视图,在这个视图中有两个组合框 我想这样做: 在combobox组中有表组的所有描述,当我选择此描述的项目(第一个combobox)时,第二个combobox只填充与我之前选择的描述相关的描述 这是一些代码: XAML NewItemView: <ComboBox Height="21" HorizontalAlignment="Left" Margin="89,99,0,0" Vertic

我有这张桌子:

我在我的项目中使用这个名为NewItem的视图,在这个视图中有两个组合框

我想这样做: 在combobox组中有表组的所有描述,当我选择此描述的项目(第一个combobox)时,第二个combobox只填充与我之前选择的描述相关的描述

这是一些代码:

XAML NewItemView:

<ComboBox Height="21" HorizontalAlignment="Left" Margin="89,99,0,0" 
                  VerticalAlignment="Top" Width="106" x:Name="Group" SelectedItem="{Binding SelectedGroup}" />
我想指定使用Caliburn.Micro和Dapper进行acces查询


非常感谢你

这是一个典型的主/细节场景,有一个典型且简单的解决方法

I.在
GetGroups
方法中,不只是将描述作为
string[]
加载,而是加载enitre
Group
对象,或者如果有许多属性,则创建仅包含两个所需属性的视图模型,如下所示:

class GroupViewModel {
    public int GroupId {get; set;}
    public string Description {get; set;}
}
class NewItemViewModel {
    public GroupViewModel SelectedGroup
    {
        set {
            var currentlySelected = value;
            // LOAD ALL RELATED Subgroup Descriptions FOR currentlySelected.GroupId;
            Subgroups = // LOADED Subgroup DESCRIPTIONS
        }
    }
    public ObservableCollection<GroupViewModel> Group { get { return Groups; } }
}
二,。在
NewItemViewModel
中,为第二个组合框添加一个属性

class NewItemViewModel {
    private ObservableCollection<SubgroupViewModel> _subgroups;
    public ObservableCollection<SubgroupViewModel> Subgroups
    {
        get {
            if (_subgroups == null)
                _subgroups = new ObservableCollection<SubgroupViewModel>();
            return _subgroups;
        }
        set {
            _subgroups = value;
            NotifyPropertyChanged("Subgroups");
        }
    }
}

我希望你能理解,这是这个方法的基本轮廓。我认为您可以通过利用其中的一些技术和使用其他技术来加载数据,从而对其进行一些改进。

您能否提供一些代码,说明您是如何尝试实现的,还是在如何实现目标方面迷失了方向?我更新了我的问题!
class NewItemViewModel {
    private ObservableCollection<SubgroupViewModel> _subgroups;
    public ObservableCollection<SubgroupViewModel> Subgroups
    {
        get {
            if (_subgroups == null)
                _subgroups = new ObservableCollection<SubgroupViewModel>();
            return _subgroups;
        }
        set {
            _subgroups = value;
            NotifyPropertyChanged("Subgroups");
        }
    }
}
class NewItemViewModel {
    public GroupViewModel SelectedGroup
    {
        set {
            var currentlySelected = value;
            // LOAD ALL RELATED Subgroup Descriptions FOR currentlySelected.GroupId;
            Subgroups = // LOADED Subgroup DESCRIPTIONS
        }
    }
    public ObservableCollection<GroupViewModel> Group { get { return Groups; } }
}