我有一个要求在哪里创建可自动应用的contextmenu风格,我已经尝试了我在网上找到的每个例子,但没有任何工作。我已经尝试过在MSDN链接中叙述的样式:http://msdn.microsoft.com/en-us/library/ms744758(v=vs.85).aspx如何为默认的wpf contextmenu创建样式?
我已经使用了下面的样式,但它不工作。
<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>
这种风格适合我。你在哪里定义了它? –
在资源部分的App.xaml中对其进行了定义。我想我会工作 – loop
我将它添加到TextBoxStyles.xaml它是一个资源字典。但它不起作用 – user2408987