[英]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.