我在这里遇到了 TreeView-Binding 和 ContextMenu 的问题:Selected TreeViewItem is null
现在我遇到了这个问题:我有 ContextMenu
<TreeView.ContextMenu>
<ContextMenu x:Name="MyContext" ItemsSource="{Binding OCContext}" DisplayMemberPath="Text"/>
</TreeView.ContextMenu>
(图像显示了我的 ContextMenu 的样子,不要介意 tabItem ......)。
如您所见,它只是 ContetMenu,没有 MenuItem!如果用户点击关闭,我想在我的 ViewModel 中做一些事情(提出命令?)。我也想知道他点击了哪个按钮/菜单。Menus 的数量是动态的,因为它的 ItemsSource 正在被绑定。
这是我的视图模型:
private ObservableCollection<T_Antwort> _occontext;
public ObservableCollection<T_Antwort> OCContext
{
get
{
if (_occontext == null)
_occontext = new ObservableCollection<T_Antwort>();
return _occontext;
}
set
{
_occontext = value;
RaisePropertyChanged(() => OCContext);
}
}
所以我想要做的就是将 ContextMenu(“项目”Close 和 CloseOtherThankThis)绑定到我的 ViewModel,所以当用户点击其中一个时,我想在我的 ViewModel 中访问它们。这意味着我不想一一绑定它们,我想以某种方式获取一个事件(ContextMenuItemClicked(?))被调用并在我的ViewModel中使用它。
顺便提一句。在 ContextMenu 下使用 MenuItem 将创建另一个“菜单文件夹”,所以它是
" " -> 关闭
" " -> CloseOtherThankThis
而且我不希望它看起来像这样。
编辑:我目前得到这样的项目:
private void MyContext_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
System.Windows.Controls.Primitives.MenuBase s = sender as System.Windows.Controls.Primitives.MenuBase;
ItemCollection ic = s.Items;
T_Antwort SelectedItem = (T_Antwort)ic.CurrentItem;
}
是否有可能通过绑定获得所选项目?