Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 在xaml中更改上下文菜单_Wpf_Xaml - Fatal编程技术网

Wpf 在xaml中更改上下文菜单

Wpf 在xaml中更改上下文菜单,wpf,xaml,Wpf,Xaml,我有一个视图,其中有两个定义为资源的大型上下文菜单。它们看起来像这样(只是更大): 我知道我可以使用命令的canExecute方法动态显示/隐藏项目。但由于这是两种完全不同的模式,我只想绑定一个bool属性,它决定显示哪个上下文菜单。大概是这样的: <ListView ContextMenu={binding ContextMenuSelector}> 有人知道我怎么做这样的事情吗?考虑使用一个 DataTemplateSelector使您能够根据itemscontrol中

我有一个视图,其中有两个定义为资源的大型上下文菜单。它们看起来像这样(只是更大):


我知道我可以使用命令的canExecute方法动态显示/隐藏项目。但由于这是两种完全不同的模式,我只想绑定一个bool属性,它决定显示哪个上下文菜单。大概是这样的:

<ListView ContextMenu={binding ContextMenuSelector}>

有人知道我怎么做这样的事情吗?

考虑使用一个

DataTemplateSelector使您能够根据itemscontrol中每个datacontext项的上下文显示特定的演示文稿

我已经将它用于可能不同行为的上下文菜单项。

考虑使用一个

DataTemplateSelector使您能够根据itemscontrol中每个datacontext项的上下文显示特定的演示文稿


我曾将其用于可能有不同行为的上下文菜单项。

我从DataTemplateSelector中获得了一些好主意,但最终我使用了一种带有数据触发器的样式:

 <Style TargetType="{x:Type StackPanel}" x:Key="stackPanelStyle">
        <Style.Triggers>
            <DataTrigger Binding="{Binding Path=AppendMode}" Value="True">
                <Setter Property="ContextMenu" Value="{DynamicResource PanelContextMenuAttachFile}"></Setter>
            </DataTrigger>
            <DataTrigger Binding="{Binding Path=AppendMode}" Value="False">
                <Setter Property="ContextMenu" Value="{DynamicResource PanelContextMenu}"></Setter>
            </DataTrigger>

        </Style.Triggers>
    </Style>

我从DataTemplateSelector中得到了一些好主意,但最终我得到了一个带有数据触发器的样式:

 <Style TargetType="{x:Type StackPanel}" x:Key="stackPanelStyle">
        <Style.Triggers>
            <DataTrigger Binding="{Binding Path=AppendMode}" Value="True">
                <Setter Property="ContextMenu" Value="{DynamicResource PanelContextMenuAttachFile}"></Setter>
            </DataTrigger>
            <DataTrigger Binding="{Binding Path=AppendMode}" Value="False">
                <Setter Property="ContextMenu" Value="{DynamicResource PanelContextMenu}"></Setter>
            </DataTrigger>

        </Style.Triggers>
    </Style>


您可以基于该开关使用绑定到ViewModel属性的转换器并显示其中一个。如果您重视使用DataTemplateSelector的建议,您可以基于该开关使用绑定到ViewModel属性的转换器并显示其中一个,那么您可以按答案上的向上箭头吗?如果您重视使用DataTemplateSelector的建议,那么您可以按答案上的向上箭头吗?