[英]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.