簡體   English   中英

如何創建WPF樣式,以便所有Image控件都有一個MouseDown(單擊)事件?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM