WPF:鼠标双击图像使用交互

标签 wpf double-click

我正在尝试使用交互功能来实现鼠标双击标准图像控件。 Image 控件在 UserControl 上,应该处理鼠标双击的方法在 View 模型上。代码如下:

1)用户控制:

<ItemsControl Grid.Row="0" ItemsSource="{Binding SelectedEventPhotoList}"
            HorizontalAlignment="Stretch"
            VerticalAlignment="Stretch"                  
            Name="SelectedListView">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <UniformGrid Rows="1" Columns="3"/>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Image Source="{Binding}" Stretch="None">
                <i:Interaction.Triggers>
                    <i:EventTrigger EventName="MouseDoubleClick">
                        <ei:CallMethodAction MethodName="DblClick" TargetObject="{Binding}"/>
                    </i:EventTrigger>
                </i:Interaction.Triggers>
            </Image>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

3)查看模型:
public void DblClick()
{
    MessageBox.Show("Double click!");
}

但是,它不起作用。

更新:

我这样做了,但它不起作用:

1)XAML:
<ItemsControl Grid.Row="0" ItemsSource="{Binding SelectedEventPhotoList}"
            HorizontalAlignment="Stretch"
            VerticalAlignment="Stretch"                  
            Name="SelectedListView">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <UniformGrid Rows="1" Columns="3"/>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
                <Image Source="{Binding}">
                    <Image.InputBindings>
                        <MouseBinding MouseAction="LeftDoubleClick" Command="{Binding MouseDoubleClickCommand}"/>
                    </Image.InputBindings>
                </Image>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

2)查看模型:
public DelegateCommand MouseDoubleClickCommand { get; private set; }

在构造函数中:
MouseDoubleClickCommand = new DelegateCommand(DblClick);

并添加方法:
public void DblClick()
{
    MessageBox.Show("Double click!");
}

最佳答案

有时处理 OnMouseDownClickCount 很有用(或 MouseLeftButtonDown )事件处理程序并检查 ClickCount MouseButtonEventArgs 的属性(property)争论。这种方法允许处理单击、双击、三次单击等 :)

private void OnMouseDownClickCount(object sender, MouseButtonEventArgs e)
{
    if (e.ClickCount == 2)
    {
        // Double Click occurred.
        ...
    }
}
但是这种方法有一个“特点”。双击 OnMouseDownClickCount 时事件上升两次:第一次是 e.ClickCount == 1然后用 e.ClickCount == 2 .

关于WPF:鼠标双击图像使用交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42396396/

相关文章:

c# - 如何将 'System.Windows.Media.Imaging.BitmapImage' 转换为 'System.Drawing.Image' ?

.net - 是否可以在 WPF 数据网格中设置 'freeze pane'

javascript - GWT 计时器取消不起作用

javascript - DoubleClick 广告 : Possible issues with googletag. 定义的插槽与页面上的 googletag.display 不匹配

visual-studio-2008 - 双击Visual Studio 2008编译错误不会将我带到源文件

c# - WPF - 如何使用 XAML 中的参数将 ViewModel 绑定(bind)到 View

c# - XAML 找不到转换器类

c# - 父控件的 WPF ContextMenu 在具有自己的 ContextMenu 的子控件上打开

javascript - 双击 Jquery 中的歧义?