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

WPF将自定义ContextMenu添加到另一视图中引用的视图

叶坚
2023-03-14

我试图完成的是将上下文菜单放置到在另一个视图中引用的列表框项中:

<UserControl x:Class="Foo.Bar.MyTestApp.Views.ListBoxPresenterView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:views="clr-namespace:Foo.Bar.MyTestApp.Views">
    <Grid>
        
        <views:MyListBoxView />
    </Grid>
</UserControl>

这可以很好地显示我的MyListBoxView.xaml。但是,我想知道的是,是否可以向视图添加上下文菜单:来自ListBoxPresenterView.xaml的MyListBoxView。原因是我只想让MyListBoxView.xaml尽可能通用。所以如果我想对它做任何特殊的修改,那么就让它只在引用它的类中。

所以本质上是这样的:

<views:MyListBoxView >
<style TargetType="ListBoxItem">
... add context menu to a list box item template
</ListBox>
<views:MyListBoxView />

如果对此有任何想法,将不胜感激。

共有1个答案

左丘成仁
2023-03-14

如果MyListBoxView确实是ListView,则可以像往常一样设置其或其项容器的ContextMenu:

<views:MyListBoxView>
    <views:MyListBoxView.ItemContainerStyle>
        <Style TargetType="ListBoxItem">
            <Setter Property="ContextMenu">
                <Setter.Value>
                    <ContextMenu />
                </Setter.Value>
            </Setter>
        </Style>
    </views:MyListBoxView.ItemContainerStyle>
</views:MyListBoxView>

如果它是UserControl,则可以向UserControl添加依赖项属性,然后在MyListBoxView的XAML标记中添加该属性。

ListBoxPresenterView:

<views:MyListBoxView ItemContextMenu="..." />

MyListBoxView:

<Setter Property="ContextMenu"
    Value="{Binding ItemContextMenu, RelativeSource={RelativeSource AncestorType=UserControl}}">
 类似资料:
  • 我找到了一些关于这个问题的帖子,但是没有一个能解决我的问题。 说像我已经... ViewControlllerA ViewControlllerB 我试图将ViewControlllerB添加为ViewControlllerA中的子视图,但是,它抛出了一个错误,如""。 下面是代码。。。 视图控制器 ViewControllerB只是一个带有标签的简单屏幕。 视图控制器B 编辑

  • 问题内容: 我没有找到有关此问题的文章,但没有一个解决我的问题。 就像我说的那样。 ViewControllerA ViewControllerB 我试图将添加为的子视图,但是它 抛出类似“ ” 的错误。 下面是代码… ViewControllerA ViewControllerB只是一个带有标签的简单屏幕。 ViewControllerB EDIT 根据用户答案的​​建议解决方案,ViewCon

  • 本文向大家介绍在django admin中添加自定义视图的例子,包括了在django admin中添加自定义视图的例子的使用技巧和注意事项,需要的朋友参考一下 django admin提供了完善的用户管理和数据模型管理,方便实用。研究了一下在admin里面添加自己的页面。 在admin.py里继承django.contrib.admin.ModelAdmin基类 然后在里面写自己的视图处理函数。基

  • 英文原文:http://emberjs.com/guides/views/customizing-a-views-element 视图在页面上表现为一个单一的DOM元素。通过修改tagName属性,可以改变视图生成的元素的类型。 1 2 3 App.MyView = Ember.View.extend({ tagName: 'span' }); 另外,还可以通过设置一个字符串数组到clas

  • 英文原文:http://emberjs.com/guides/views/defining-a-view/ 你可以使用Ember.View来渲染一个Handlebars模板并将它插入到DOM中。 为了告诉视图要用哪个模板,可以设置它的temaplateName属性。例如,如果我有一个像这样的<script>标签: 1 2 3 4 5 6 7 <html> <head> <script

  • 我正在使用GraphStream库。目前,当我运行我的程序时,它会为我的图形打开新窗口并为我的图形打开单独的窗口。我尝试创建一个并将添加到中,之后我尝试将图形添加到我的中,但它说图形对象不是组件。 这是我的代码: 此程序为和图形打开单独的窗口。我想将我的图形显示在我的或。你知道怎么做吗?我看过这个链接,但它不能很好地解释我。