繁体   English   中英

WPF 带有数据网格和 TabControl 的 MVVM 主详细信息视图

[英]WPF MVVM Master detail view with a datagrid and a TabControl

我正在尝试在 WPF MVVM 中实现主详细信息视图。

在我的视图模型中,我有一个可观察的“原因”集合。 每个原因都有一个可观察的“解决方案”集合。

我将一个可编辑的 Datagrid 绑定到原因,它工作正常。 但是当用户在 DataGrid 中选择一行时,我希望允许用户在 TabControl 中查看其关联的解决方案。

我应该如何 go 这样做? 我是否应该在 Viewmodel 中创建一个属性 CurrentCause 并将其绑定到 SelectedItem。 在 TabControl 中,我可以绑定到 CurrentCause.Solutions。

这会是最佳方法吗? 请指教。 谢谢!!

您可以使用元素绑定将 TabControl 的ItemsSource绑定为 DataGrid 的SelectedItem

<TabControl ItemsSource="{Binding ElementName=myDataGrid, Path=SelectedItem.Solutions}">

您可以将 IsSynchronizedWithCurrentItem 设置为 True 并执行类似操作。

我会将您的 DataGrid 绑定到原因列表,将 SelectedItem 绑定到 Model 中的 CurrentCause 并将 TabControl 绑定到解决方案。 然后,您将所有内容都很好地绑定在 MVVM 中。

private Cause _currentCause;
public Cause CurrentCause
{
    get { return _currentCause; }
    set
    {
        if (_currentCause == value) return;
            CurrentSolution = _currentCause.Solutions;  //However you do this...
        _currentCause = value;

        RaisePropertyChanged("CurrentCause");
    }
}

private ObservableCollection<Cause> _causes;
public ObservableCollection<Cause> Causes
{
    get { return _causes; }
    set
    {
        _causes = value;
        RaisePropertyChanged("Causes");
    }
}
private ObservableCollection<Solution> _solutions;
public ObservableCollection<Solution> Solutions
{
    get { return _solutions; }
    set
    {
        _solutions = value;
        RaisePropertyChanged("Companies");
    }
}



<dg:DataGrid ItemsSource="{Binding Causes}" SelectedItem="{Binding CurrentCause}"...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM