我正在尝试在WPF MVVM中实现Master详细信息视图。
在我的viewmodel中,我有一个可观察的“原因”集合。每个原因都有一个可观察的“解决方案”集合。
我将一个可编辑的Datagrid绑定到Cause并且它工作正常。但是当用户在DataGrid中选择一行时,我希望允许用户在TabControl中查看其关联的解决方案。
我应该怎么做呢?我应该在Viewmodel中创建一个属性CurrentCause并将其绑定到SelectedItem。在TabControl中我可以绑定到CurrentCause.Solutions。
这是一种最佳方法吗?请指教。谢谢!!
答案 0 :(得分:2)
您可以使用元素绑定将TabControl的ItemsSource
绑定为DataGrid的SelectedItem
。
<TabControl ItemsSource="{Binding ElementName=myDataGrid, Path=SelectedItem.Solutions}">
答案 1 :(得分:2)
您可以将IsSynchronizedWithCurrentItem设置为True并执行this之类的操作。
答案 2 :(得分:1)
我会将您的DataGrid绑定到一个Cause列表,将ModelItem绑定到Model中的SelectedCtem,将TabControl绑定到Solutions。然后你把所有东西都绑在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}"...