• 【WPF】图片按钮的单击与双击事件


    需求:ListBox中的Item是按钮图片,要求单击和双击时触发不同的事件。

    XAML中需要引入System.Windows.Interactivity.dll

    xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"

    该ListBox的关键代码如下。

    <ListBox ItemsSource="{Binding YourList}">
        <ListBox.Template>
            <!-- 流式布局 左对齐 -->
            <ControlTemplate TargetType="ListBox">
                <WrapPanel Width="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DataContext.YourWidth}" Orientation="Horizontal" IsItemsHost="True"/>
            </ControlTemplate>
        </ListBox.Template>
        <ListBox.ItemTemplate>
            <DataTemplate>
                <Grid>
                    <!-- 单击事件,传参Button自身 -->
                    <Button Width="160" Height="120" Background="Transparent" BorderBrush="#E12080" BorderThickness="1"
                            Command="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DataContext.YourClickCommand}"
                            CommandParameter="{Binding RelativeSource={x:Static RelativeSource.Self}}" BorderBrush="#E12080" BorderThickness="1">
                        <!-- 双击事件,传参父节点的Button -->
                        <i:Interaction.Triggers>
                            <i:EventTrigger EventName="MouseDoubleClick">
                                <i:InvokeCommandAction 
                                    Command="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DataContext.YourDoubleClickCommand}"
                                    CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorLevel=1, AncestorType={x:Type Button}}}"/>
                            </i:EventTrigger>
                        </i:Interaction.Triggers>
                        <Grid>
                            <!-- ListBoxItem的内容 -->
                            
                        </Grid>
                    </Button>
                </Grid>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
  • 相关阅读:
    netcore一键部署到linux服务器以服务方式后台运行
    查找100-999之间的水仙花数
    shell创建数据库的脚本
    python打印九九乘法表的菱形实现
    c++一些重要的细节
    MySQL数据库基础学习笔记(二)
    MySQL数据库基础学习笔记(一)
    react-redux 的基本使用
    react-router-dom基本使用+3种传参方式
    从create-react-app 项目搭建开始
  • 原文地址:https://www.cnblogs.com/guxin/p/8777013.html
Copyright © 2020-2023  润新知