• 【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>
  • 相关阅读:
    开始之旅9.18
    驱动学习
    Extjs TextField扩展
    数据结构经典算法java
    JAVA BeanUtil应用 一个类向另一个类转换
    Extjs timefield
    图片压缩成指定大小
    js正则表达式提取字符串中的数字
    STM32笔记记录2
    #ifdef,#else,#endif,#if用法详解
  • 原文地址:https://www.cnblogs.com/guxin/p/8777013.html
Copyright © 2020-2023  润新知