我做了一个用户自定义控件:
<UserControl x:Class="AForge.Controls1.WPFVideoSourcePlayer" 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" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="300" BorderBrush="Gray" BorderThickness="5" PreviewMouseLeftButtonUp="UserControl_PreviewMouseLeftButtonUp" Loaded="UserControl_Loaded" Focusable="True"> <Grid> <Image Name="imageBox" Stretch="Fill" PreviewMouseDown="imageBox_PreviewMouseDown"/> </Grid> </UserControl>
private void imageBox_PreviewMouseDown(object sender, MouseButtonEventArgs e) { BorderBrush = System.Windows.Media.Brushes.Green; }
private void UserControl_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e) { BorderBrush = System.Windows.Media.Brushes.Green; }
想让这个控件在点击的时候边框编程绿色.但是无论怎么点击控件中间 都没有反映,但是点击控件边缘的时候有反应,难道Image控件不能响应鼠标事件??
各位高手讲解下~~
这种功能应该用触发器去实现,最简单的例子可以参考 http://wpftutorial.net/Triggers.html
问题不在于此,触发器的机制和使用事件其实是一样的,只是触发器使用样式或者模版的形式定义,编译器在后来为你生了相关的事件.我这样定义个控件,当鼠标移到控件上式然后没有预期的效果:
<UserControl x:Class="IntelligentCameraCenter.TestPlayer" 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" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="300"> <Grid Background="AliceBlue"> <Grid.Style> <Style TargetType="Grid"> <Style.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Background" Value="Red" /> </Trigger> </Style.Triggers> </Style> </Grid.Style> </Grid> </UserControl>
问题不在于此,触发器的机制和使用事件其实是一样的,只是触发器使用样式或者模版的形式定义,编译器在后来为你生了相关的事件.我这样定义个控件,当鼠标移到控件上式然后没有预期的效果:
<UserControl x:Class="IntelligentCameraCenter.TestPlayer" 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" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="300"> <Grid Background="AliceBlue"> <Grid.Style> <Style TargetType="Grid"> <Style.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Background" Value="Red" /> </Trigger> </Style.Triggers> </Style> </Grid.Style> </Grid> </UserControl>
我把image放在一个button的content里面 用button来响应鼠标,可以解决我的需求,但是总感觉怪怪的,先暂时不结贴,坐等更高手的回复~~~
image有这个BorderBrush属性吗??瞎写什么呢?
不要激动,BorderBrush是UserControl的~~不是image的
@xiaxia—博客园: 那你就在用户控件里,把image的事件 注册为这个用户控件的路由事件吧。