XAML 自定义WPF上下文菜单

pxy2qtax  于 2022-12-07  发布在  其他
关注(0)|答案(1)|浏览(213)

我想创建一个自定义上下文菜单,其中每个菜单项顶部都有图像,下面都有文本。
我知道我可以通过这样操作模板来实现

<Style TargetType="{x:Type ContextMenu}">
    <Setter Property="Template">
        <Setter.Value>
           <ControlTemplate TargetType="{x:Type ContextMenu}">
                 //do whatever here
           </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

但是在我的程序中,每个控件都有相同的基本模板,所有相同类型的控件(这里是它的contextmenu)都从它继承,我不想通过覆盖这里的模板来破坏它
有没有什么方法可以不改变模板就达到我想要的效果呢?

tkqqtvp1

tkqqtvp11#

你需要在你的风格中设置一个key

<Style TargetType="{x:Type ContextMenu}" x:key="CustomContextMenu">
    <Setter Property="Template">
      <Setter.Value>
           <ControlTemplate TargetType="{x:Type ContextMenu}">
                 //do whatever here
           </ControlTemplate>
       </Setter.Value>
     </Setter>
</Style>

像这样涂上。

<Button Content="Right" Grid.Column="1">
    <Button.ContextMenu>
        <ContextMenu Style="{StaticResource CustomContextMenu}">
            <MenuItem Header="File" />
            <MenuItem Header="Save" />
            <MenuItem Header="SaveAs" />
        </ContextMenu>
    </Button.ContextMenu>
</Button>

相关问题