WPF-ContextMenu - 如何在鼠标悬停或焦点上禁用背景更改

时间:2011-06-27 04:45:48

标签: c# wpf contextmenu

这是我在StackOverFlow中的第一个问题,

我有一个文本框,点击时会显示一个上下文菜单,我在上下文菜单中有一些控件(用户控件或..)。

一切都很好,除非鼠标悬停,我的所有控件都会聚焦,背景变为蓝色,非常糟糕, 另一个问题,在上下文菜单中,有一条垂直线,左边是一个Icon位置,如何删除它?

C#代码:

private void textBox1_GotMouseCapture(object sender, MouseEventArgs e)
    {

        textBox1.ContextMenu.PlacementTarget = textBox1;
        textBox1.ContextMenu.IsOpen = true;
        textBox1.Focus();
}

和XAML代码:

<TextBox Height="23" HorizontalAlignment="Left" Margin="12,55,0,0"
Name="textBox1" VerticalAlignment="Top"
Width="120" MouseDown="textBox1_MouseDown" 
GotMouseCapture="textBox1_GotMouseCapture"
ContextMenuService.HasDropShadow="False" 
ContextMenuService.ShowOnDisabled="True" 
TextChanged="textBox1_TextChanged">
<TextBox.ContextMenu>
<ContextMenu Name="ctm" Placement="Relative" 
    Focusable="False" HasDropShadow="False" 
    VerticalOffset="23" HorizontalOffset="0">
    <StackPanel Margin="0" >
        <TextBox Text="testing..." Name="testing"></TextBox>
    </StackPanel>                    
</ContextMenu>
</TextBox.ContextMenu>
</TextBox>

感谢所有人。

1 个答案:

答案 0 :(得分:1)

解决“颜色”问题的一种方法。您可以覆盖系统颜色以获得所需的行为。 只需选择您需要覆盖的SystemColor。

<ContextMenu>
   <ContextMenu.Resources>
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="LightBlue"/>
   </ContextMenu.Resources>

编辑:

我在上下文菜单中使用以下内容将selectioncolor设置为透明,将所选项目设置为绿色前景。

<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent"/>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="DarkGreen"/>