繁体   English   中英

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

[英]WPF-ContextMenu - how to Disable background change on mouse over or focus

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

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

一切正常,除了将鼠标悬停在上面,我所有的控件都获得了焦点,它们的背景变成了蓝色,太糟糕了,另一个问题,在上下文菜单中,有一条垂直线,在它的左侧有一个图标位置,我该如何删除呢?

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>

谢谢大家 。

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

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

编辑:

我将以下内容用于上下文菜单,以将selectioncolor设置为transparent并将所选项目设置为绿色前景。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM