[英]How can I create a WPF style so all Image controls have a MouseDown(click) event on it?
由于Image控件没有Click事件,我使用MouseDown事件模拟它,它的工作方式与Click相似。
这是我的风格:
<Window.Resources>
<Style x:Key="imageStyle" TargetType="{x:Type Image}">
<Setter Property="RenderTransform">
<Setter.Value>
<ScaleTransform />
</Setter.Value>
</Setter>
<Setter Property="RenderTransformOrigin" Value="0.5, 0.5" />
<Style.Triggers>
<EventTrigger RoutedEvent="Image.MouseEnter">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Duration="0:0:0.5" From="1" To="1.2" AutoReverse="True"
Storyboard.TargetProperty="RenderTransform.ScaleX"/>
<DoubleAnimation Duration="0:0:0.2" From="1" To="1.2" AutoReverse="True"
Storyboard.TargetProperty="RenderTransform.ScaleY"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Style.Triggers>
</Style>
</Window.Resources>
我在哪里/如何创建点击事件,所以我不必对我的表单上的每个单一图像执行此操作:
您可以使用EventSetter
:
<EventSetter Event="MouseClick" Handler="image_Click"/>
在代码隐藏中:
private void image_Click(object sender, MouseButtonEventArgs e)
{
Image image = sender as Image;
if (image != null)
{
// do something with the image
}
}
您可以使用Thomas描述的EventSetter
,或者您可以在Window级别捕获隧道PreviewMouseLeftButtonDown
事件并检查是否单击了Image。
要使用PreviewMouseLeftButtonDown
为应用程序中的所有图像执行某些操作,只需将其添加到顶级Window
:
protected override void OnPreviewMouseLeftButtonDown(MouseButtonEventArgs e)
{
if(e.Source is Image)
{
// ... whatever you want to do when an image is clicked ...
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.