WPF - TabItem MouseOver未按预期工作

 伊达xx_790 发布于 2023-02-13 04:58

我有一个带有TabItem元素的IsMouveOver触发器的问题.

当鼠标光标位于TabItem上时,其背景颜色会发生变化,这就是我想要的=>它的工作原理.但是,只要我的鼠标光标位于TabItem内的项目上,TabItem的背景颜色也会发生变化.

这是与样式相关的XAML:

    

以及Windows本身的XAML代码:

    
        
             
                

例如,使用此代码,当鼠标光标位于其包含的按钮上时,将触发TabItem的IsMouseOver.

如何解决这个问题?:P

谢谢你的帮助=)

1 个回答
  • 它不起作用,因为Border as container接受所有事件,MouseOver并不是例外.如果你想忽略MouseOver某个部分的事件(你的项目的内部部分),那么只需将内部项目放在更宽的项目之上.

    您可以在内部部件下添加网格控件并绑定Trigger到其MouseOver事件.

        <Border Margin="2" Name="TabBorder" CornerRadius="6" BorderBrush="Transparent" Background="Transparent" 
    BorderThickness="2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
    <Grid>
        <Grid x:Name="gridMouseOver"/>
        <StackPanel Margin="12" Orientation="Horizontal" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
                <Rectangle   Fill="Blue" HorizontalAlignment="Left" Margin="00,0,0,0"></Rectangle>
                <ContentPresenter ContentSource="Header" VerticalAlignment="Center" 
                        HorizontalAlignment="Stretch" Margin="10,0,0,0"></ContentPresenter>
            </StackPanel>
    </Grid>
    </Border>
    <ControlTemplate.Triggers>
    <Trigger Property="IsSelected" Value="True">
        <Setter Property="Panel.ZIndex" Value="100" />
        <Setter TargetName="TabBorder" Property="Background" Value="#FFDFDFDF" />
        <Setter TargetName="TabBorder" Property="BorderThickness" Value="2" />
        <Setter TargetName="TabBorder" Property="BorderBrush" Value="{DynamicResource WindowTitleColorBrush}"/>
    </Trigger>
    <Trigger Property="IsEnabled" Value="False">
        <Setter TargetName="TabBorder" Property="Background" Value="DarkRed" />
        <Setter TargetName="TabBorder" Property="BorderBrush" Value="Black" />
        <Setter Property="Foreground" Value="DarkGray" />
    </Trigger>
    <Trigger SourceName="gridMouseOver" Property="IsMouseOver" Value="True">
        <Setter TargetName="TabBorder" Property="Background" Value="{DynamicResource WindowTitleColorBrush}"/>
    </Trigger>
    </ControlTemplate.Triggers>
    

    2023-02-13 05:24 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有