我有一个选项卡控件,它在第一个选项卡中加载 WPF 数据网格。数据网格中的行由 MemberViewModel 填充。当数据网格 selectItem 发生更改时,我已经设法获取选定的 MemberViewModel,但是如何将它传递给我想使用命令将其添加到 TabItems 集合的 RibbonViewModel?RibbonViewModel 是我的 Ribbon 的 ViewModel。在该功能区上有一个按钮,可以将新的 MemberViewModel 添加到 tabItemsCollection,这很好用。但是,我想从我的数据网格中添加选定的 MemberViewModel,以添加为新的 tabitem。
RibbonViewModel 中的代码(命令)将新的 MemberViewModel 添加到 TabItemsCollection
private void AddSelectedMemberTabItem(object notUsed)
{
_tabViewModel.TabItems.Add(new MemberViewModel{ Header = "Member" }); // OK, this works fine
_tabViewModel.TabItems.Add(SelectedMemberViewModel); // this doesnt work, DP SelectedMemberViewModel is never filled, don't know how to retrieve it from the selected datagrid item.
_addOverview.RaiseCanExecuteChanged();
}
从选定的 datagriditem 中检索选定的 MemberViewModel 的代码(在 OverviewViewModel 中):
public static readonly DependencyProperty SelectedItemProperty = DependencyProperty.Register("SelectedItem", typeof(MemberViewModel), typeof(OverviewViewModel), new UIPropertyMetadata(OnSelectedMemberPropertyChanged));
public MemberViewModel SelectedItem
{
get { return (MemberViewModel)GetValue(SelectedItemProperty); }
set { SetValue(SelectedItemProperty, value); }
}
private static void OnSelectedMemberPropertyChanged(DependencyObject m, DependencyPropertyChangedEventArgs args)
{
var selectedMember = m.GetValue(SelectedItemProperty) as MemberViewModel;
_ribbonViewModel.SelectedMemberViewModel = selectedMember; // error: cannot access non-static field (_ribbonViewModel) in static contect
}
如何从 OverviewViewModel 上的 OnSelectedMemberPropertyChanged 方法填充 _ribbonViewModel.SelectedMemberViewModel?还是我走错了路?