1

我需要在哪里为上下文菜单创建一个可以自动应用的样式,我已经尝试了我在网上找到的每个示例,但没有任何效果。我尝试过 MSDN 链接中叙述的风格:http: //msdn.microsoft.com/en-us/library/ms744758 (v=vs.85).aspx

我使用了以下样式,但它不起作用。

<Style x:Key="CStyle" TargetType="ContextMenu">
        <Setter Property="SnapsToDevicePixels"
                Value="True" />
        <Setter Property="OverridesDefaultStyle"
                Value="True" />
        <Setter Property="Grid.IsSharedSizeScope"
                Value="true" />
        <Setter Property="HasDropShadow"
                Value="True" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="ContextMenu">
                    <Border Name="Border"
                            Background="Red"
                            BorderBrush="{StaticResource SolidBorderBrush}"
                            BorderThickness="1">
                        <StackPanel IsItemsHost="True"
                                    KeyboardNavigation.DirectionalNavigation="Cycle" />
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="HasDropShadow"
                                 Value="true">
                            <Setter TargetName="Border"
                                    Property="Padding"
                                    Value="0,3,0,3" />
                            <Setter TargetName="Border"
                                    Property="CornerRadius"
                                    Value="4" />
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

谁能指导我实现这一目标?

我尝试将此样式应用于 TextBoxStyle(请参见下面的示例),当我运行它并右键单击文本框的内容时,我看到以下错误:

“'System.Windows.Style' 不是属性 'ContextMenu' 的有效值。” 我在以下风格的任何地方都做错了吗?请指导我。

示例文本框样式:

<Style x:Key="TextBoxStyle" TargetType="{x:Type TextBox}" BasedOn="{StaticResource BaseTextStyle}">
    <Setter Property="SnapsToDevicePixels" Value="True"/>
    <Setter Property="ContextMenu" Value="{StaticResource CStyle}" />
    <Setter Property="Validation.ErrorTemplate" Value="{x:Null}"/>
    <Setter Property="Template">
        <Setter.Value>
4

1 回答 1

2

编辑:基于修改后的问题

您正在尝试将 的值设置ContextMenu为 a Style。将您的样式更改为以下内容:

    <Style x:Key="TextBoxStyle" TargetType="{x:Type TextBox}" BasedOn="{StaticResource BaseTextStyle}">
        <Setter Property="SnapsToDevicePixels" Value="True"/>
        <Setter Property="ContextMenu">
            <Setter.Value>
                <ContextMenu Style="{StaticResource CStyle}">
                    <MenuItem Header="Cut" Command="Cut"/>
                    <MenuItem Header="Copy" Command="Copy"/>
                    <MenuItem Header="Paste" Command="Paste"/>
                </ContextMenu>
            </Setter.Value>
        </Setter>
        <Setter Property="Validation.ErrorTemplate" Value="{x:Null}"/>
    </Style>
于 2013-07-04T10:42:56.953 回答