在模板中正确设置上下文菜单

时间:2014-08-04 12:34:40

标签: wpf custom-controls controltemplate

我正在尝试设置一个控件模板,允许我向元素添加上下文菜单。麻烦是我能弄清楚如何做到这一点的唯一方法是嵌套两个标签。

这是我的风格:

    <Style x:Key="RightClickMenu" TargetType="{x:Type Label}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Label">
                <Label Name="RightClickElement">
                    <Label.ContextMenu>
                            <ContextMenu DataContext="{Binding PlacementTarget, RelativeSource={RelativeSource Self}}">
                                <MenuItem x:Name="CopyMenuItem" Command="{Binding DataContext.OnCopyCommand}"  InputGestureText="Ctrl+C" Header="Copy" />
                                <MenuItem x:Name="PasteMenuItem" Command="{Binding DataContext.OnPasteCommand}" InputGestureText="Ctrl+P" Header="Paste" />
                            </ContextMenu>
                    </Label.ContextMenu>
                </Label>
            <ControlTemplate.Triggers>
                    <Trigger Property="IsMouseOver" Value="true">
                        <Setter Property="FontWeight" Value="Bold"/>
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

现在将标签变为标签的唯一方法是:

<Expander Name="ExpanderControl" Margin="5,5,5,5">
    <Expander.Header>           
        <Label x:Name="LabelTemplate" Style="{StaticResource RightClickMenu}" />
    </Expander.Header>
</Expander>

这意味着我最终会有点垃圾。另外,这意味着我无法为其他控件定义此上下文菜单!

如何指定我的expnder标头有一个模板。哪个只是一个标签?

0 个答案:

没有答案