需求: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>

 

相关文章:

  • 2021-08-20
  • 2022-01-18
  • 2022-12-23
  • 2021-12-12
  • 2022-01-23
  • 2022-01-22
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-01-30
  • 2021-09-03
  • 2022-03-11
  • 2022-12-23
  • 2022-03-05
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案