我有一个要求在哪里为contextmenu创建一个可以自动应用的样式,我已经尝试了我在网上找到的每个例子,但没有任何工作。我试过在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>
答案 0 :(得分:1)
编辑:基于修订后的问题
您正尝试将ContextMenu
的值设置为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>