Wpf 如果选中radmenuitem,如何为其应用颜色?
代码:Wpf 如果选中radmenuitem,如何为其应用颜色?,wpf,c#-4.0,telerik,wpf-controls,radmenu,Wpf,C# 4.0,Telerik,Wpf Controls,Radmenu,代码: 如果选中radmenuitem,如何为其应用颜色?我希望所选菜单项为灰色。谢谢。试试这个(仅适用于web/.NET场景): 注意:在Telerik:RadMenu标签中添加OnItemDataBound=“RadMenu1\u ItemDataBound”我不知道RadMenuItem类,但我只能假设它扩展了MenuItem类。如果是这样,那么这个答案仍然有意义。WPFMenuItem中有我称之为bug的东西。。。这个简短的例子说明了这一点: protected void RadMe
如果选中radmenuitem,如何为其应用颜色?我希望所选菜单项为灰色。谢谢。试试这个(仅适用于web/.NET场景):
注意:在Telerik:RadMenu标签中添加OnItemDataBound=“RadMenu1\u ItemDataBound”我不知道
RadMenuItem
类,但我只能假设它扩展了MenuItem
类。如果是这样,那么这个答案仍然有意义。WPFMenuItem
中有我称之为bug的东西。。。这个简短的例子说明了这一点:
protected void RadMenu1_ItemDataBound(object sender, Telerik.Web.UI.RadMenuEventArgs e)
{
if (e.Item.NavigateUrl == Request.Url.LocalPath)
{
e.Item.ForeColor = System.Drawing.Color.White;
e.Item.BackColor = System.Drawing.Color.Gray;
}
}
在此处更改Setter.Value
应该会产生您想要的效果,但您需要使用在中找到的所有ControlTemplate
来执行此操作。我给您的最后一个提示是,在定义新的ControlTemplate
s时,您应该从默认的XAML开始,然后在看到它工作并且控件看起来与默认情况下应该做的一样时才进行编辑和更改。另外,继续运行项目,看看它是否仍然适用于您所做的每几次更改。祝你好运
更新>>> 我刚刚找到Jim Nuzzi的博客页面,其中有关于为您定制WPF
菜单和MenuItem
类的进一步解释。您所说的“被选中”是什么意思?你是说鼠标悬停的颜色吗?
protected void RadMenu1_ItemDataBound(object sender, Telerik.Web.UI.RadMenuEventArgs e)
{
if (e.Item.NavigateUrl == Request.Url.LocalPath)
{
e.Item.ForeColor = System.Drawing.Color.White;
e.Item.BackColor = System.Drawing.Color.Gray;
}
}
<Menu>
<Menu.Resources>
<Style TargetType="{x:Type MenuItem}">
<Style.Triggers>
<Trigger Property="MenuItem.IsHighlighted" Value="True">
<Setter Property="MenuItem.Foreground" Value="Red" />
<Setter Property="MenuItem.Background" Value="Black" />
</Trigger>
</Style.Triggers>
</Style>
</Menu.Resources>
<MenuItem Header="One" />
<MenuItem Header="Two">
<MenuItem Header="Three" />
</MenuItem>
</Menu>
<Trigger Property="IsHighlighted"
Value="true">
<Setter Property="Background"
TargetName="Border">
<Setter.Value>
<LinearGradientBrush StartPoint="0,0"
EndPoint="0,1">
<LinearGradientBrush.GradientStops>
<GradientStopCollection>
<GradientStop Color="{StaticResource ControlLightColor}" />
<GradientStop Color="{StaticResource ControlMouseOverColor}"
Offset="1.0" />
</GradientStopCollection>
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>