Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 如果选中radmenuitem,如何为其应用颜色?_Wpf_C# 4.0_Telerik_Wpf Controls_Radmenu - Fatal编程技术网

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
类。如果是这样,那么这个答案仍然有意义。WPF
MenuItem
中有我称之为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>