当前位置: 首页 > 知识库问答 >
问题:

WPF ContextMenu的绑定标题

黄淇
2023-03-14

我在这里遇到了TreeView绑定和ContextMenu的问题:Selected TreeView项为空

现在我有这个问题:我有ContextMenu

<TreeView.ContextMenu>
    <ContextMenu x:Name="MyContext" ItemsSource="{Binding OCContext}" DisplayMemberPath="Text"/>
</TreeView.ContextMenu>

(图片显示了我的ContextMenu的样子,不要介意tabItem...)。

正如你所看到的,它只是ContetMenu,没有MenuItem!如果用户单击“关闭”,我想在ViewModel中执行一些操作(发出命令?)。我还想知道他点了哪个按钮/菜单。菜单的数量是动态的,因为它的ItemsSource正在绑定。

这是我的ViewModel:

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下使用菜单项将创建另一个“菜单文件夹”,所以它将是

" " -

" " -

我不想让它看起来像这样。

编辑:我目前得到的项目是这样的:

    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;
    }

是否有可能通过绑定获取所选项目?

共有1个答案

范豪
2023-03-14

不知道您是否尝试过,但是有一个上下文菜单的PlacementTarget,它为您提供了包含上下文菜单的对象

在我的一个项目中,我做了这样的事情:

 <MenuItem ...    Visibility="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ContextMenu}},Path=PlacementTarget.SelectedItem
 类似资料:
  • 问题内容: 是否可以将JavaFX Slider的Double-Value绑定到Label?我想得到这样的东西: 谢谢您的帮助。 问题答案: 假设您有一个返回a 的属性访问器方法,则可以执行 如果要使用Formatting String格式化字符串 ,请执行以下操作

  • 是否可以将JavaFX滑块中的双精度值绑定到标签?我想得到这样的东西: 谢谢你的帮助。

  • 我想绑定JavaFX与值。 我试过了,例如。 或 但我总是得到NullPointerException。 我怎么才能修好它?

  • 问题内容: 更新说明: 上面的示例 正常工作 ,因为版本1.0-rc4 解决 了需要不必要的变量的问题。 原始问题: 我完全按照文档中的描述进行操作,但不起作用: main.xml: button.xml: MyActivity.java: 如何获得按钮? 问题答案: 问题在于所包含的布局没有被视为数据绑定布局。要使其成为一体,您需要传递一个变量: button.xml: main.xml: 然后

  • 我有一个名为的单例。它负责在菜单中显示正确的文本。它会动态更新。 我有一个fxml文件,但是MenuText不能有对它的引用。(这将与MVVM体系结构风格相矛盾) 这是正确的做法吗?我现在有了一个MenuFactory,它也是在JavaFX方法中创建的。它设置场景的父级。 start()mehtod如下所示: 这让它变得更加复杂,我不确定这是否正确。此外,我仍然不知道如何设置fxml文件中的菜单文

  • 我在我的应用程序中使用了光标适配器。适配器绑定到一个。listview显示正确。在我的适配器视图中,我有两个文本视图和一个图像视图。在图像视图上,我添加了。listview显示正常。但是,当我单击列表中任何索引的图像视图时,它不是获取该索引的数据,而是获取其他索引的数据。 例如,如果我在listview的项目2中单击imageview(列表中的项目位置将为1),则它不是从光标获取该位置的数据,而是