我有一个自定义的usercontrol,它有一个轮廓边框,当鼠标悬停在控件上时我想以某种方式突出显示。 我试图向用户控件添加一个带鼠标触发器的样式但是没有找到如何定位子边框(样式targetname似乎找不到“OuterBorder”)。
将触发器添加到边框本身似乎根本不起作用。
<UserControl x:Class="CCC.Controls.Test"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:CCC.Controls"
mc:Ignorable="d"
d:DesignHeight="240" d:DesignWidth="182" Height="240" Width="182" Margin="2" >
<!-- tried to add trigger here too as UserControl.Style -->
<Grid>
... <!-- other controls inside here -->
<Border x:Name="OuterBorder" Width="182" CornerRadius="3" BorderThickness="3" BorderBrush="#acacac" Margin="0,00,0,0" Height="240" VerticalAlignment="Top">
<!-- doesnt work -->
<Border.Style>
<Style>
<Style.Triggers>
<Trigger Property="Border.IsMouseOver" Value="True">
<Setter Property="Border.BorderBrush" Value="Red"/>
</Trigger>
</Style.Triggers>
</Style>
</Border.Style>
</Border>
</Grid>
</UserControl>
感谢您的任何想法!
答案 0 :(得分:1)
您已将Local Value
BorderBrush
属性设为acacac
。该本地值将优先。请参阅Property Value Precedence。
为Background=Transparent
设置Border
。
从BorderBrush
代码中移除Border
并进行以下更改:
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="BorderBrush" Value="Red"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="False">
<Setter Property="BorderBrush" Value="#acacac"/>
</Trigger>
</Style.Triggers>