在wpf中设置子元素的边距时,IsMouseOver属性不起作用

63lcw9qa  于 2023-05-01  发布在  SEO
关注(0)|答案(1)|浏览(183)

最近,我正在做一个聊天的wpf应用程序。我想改变边界刷的颜色时,鼠标在边界。但是,我的代码是不工作,因为边距或填充设置.
示例代码如下:
MainWindow.xaml

<Window x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp1"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <TextBlock Text="Test" Name="testBlock"/>

        <Border Name="test" BorderThickness="1" Width="300" Height="200">

            <TextBlock Text="Test1" Margin="30"/>

            <Border.Style>
                <Style TargetType="Border">
                    <Style.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter Property="BorderBrush" Value="Red"/>
                        </Trigger>
                        <Trigger Property="IsMouseOver" Value="False">
                            <Setter Property="BorderBrush" Value="Yellow"/>
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </Border.Style>
        </Border>
    </Grid>
</Window>

MainWindow.xaml.cs

namespace WpfApp1
{
    public partial class MainWindow : Window
    {

        public MainWindow()
        {
            InitializeComponent();
        }
    }
}

我想改变边界刷时鼠标在边界。如何使工作良好?

tct7dpnv

tct7dpnv1#

鼠标悬停事件的工作原理是检测鼠标是否悬停在控件的呈现像素上。这样做的好处是,如果你制作了一个带边框的圆形按钮,你只能在圆形部分点击它,而不能在圆形部分之外点击它。这是因为边界外的颜色是“null”。通过主动将其设置为透明,它将被渲染,从而能够触发鼠标悬停事件。
这将工作:

<Border Name="test" BorderThickness="1" Width="300" Height="200" Background="Transparent">
            <TextBlock Text="Test1" Margin="30"/>
            <Border.Style>
                <Style TargetType="Border">
                    <Style.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter Property="BorderBrush" Value="Red"/>
                        </Trigger>
                        <Trigger Property="IsMouseOver" Value="False">
                            <Setter Property="BorderBrush" Value="Yellow"/>
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </Border.Style>
        </Border>

相关问题