为了账号安全,请及时绑定邮箱和手机立即绑定

使用MVVM从WPF ListView项触发双击事件

使用MVVM从WPF ListView项触发双击事件

慕少森 2019-10-25 13:14:56
在使用MVVM的WPF应用程序中,我有一个带listview项的usercontrol。在运行时,它将使用数据绑定将对象集合填充到列表视图中。将双击事件附加到列表视图中的项目的正确方法是什么,以便双击列表视图中的项目时,将触发视图模型中的相应事件并具有对被单击项目的引用?如何以干净的MVVM方式完成操作,即视图中没有任何代码?
查看完整描述

3 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

我能够使它与.NET 4.5一起使用。看起来很简单,不需要任何第三方或代码。


<ListView ItemsSource="{Binding Data}">

        <ListView.ItemsPanel>

            <ItemsPanelTemplate>

                <StackPanel Orientation="Horizontal"/>

            </ItemsPanelTemplate>

        </ListView.ItemsPanel>

        <ListView.ItemTemplate>

            <DataTemplate>

                <Grid Margin="2">

                    <Grid.InputBindings>

                        <MouseBinding Gesture="LeftDoubleClick" Command="{Binding ShowDetailCommand}"/>

                    </Grid.InputBindings>

                    <Grid.RowDefinitions>

                        <RowDefinition/>

                        <RowDefinition/>

                    </Grid.RowDefinitions>

                    <Image Source="..\images\48.png" Width="48" Height="48"/>

                    <TextBlock Grid.Row="1" Text="{Binding Name}" />

                </Grid>

            </DataTemplate>

        </ListView.ItemTemplate>

    </ListView>


查看完整回答
反对 回复 2019-10-25
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

我喜欢使用“ 附加命令行为和命令”。Marlon Grech很好地实现了“附加命令行为”。然后,可以使用这些样式为ListView的ItemContainerStyle属性分配一种样式,该样式将为每个ListViewItem设置命令。


在这里,我们设置要在MouseDoubleClick事件上触发的命令,而CommandParameter将是我们单击的数据对象。在这里,我将沿着可视化树前进以获取我正在使用的命令,但是您可以轻松地创建应用程序范围的命令。


<Style x:Key="Local_OpenEntityStyle"

       TargetType="{x:Type ListViewItem}">

    <Setter Property="acb:CommandBehavior.Event"

            Value="MouseDoubleClick" />

    <Setter Property="acb:CommandBehavior.Command"

            Value="{Binding ElementName=uiEntityListDisplay, Path=DataContext.OpenEntityCommand}" />

    <Setter Property="acb:CommandBehavior.CommandParameter"

            Value="{Binding}" />

</Style>

对于命令,您可以直接实现ICommand,也可以使用MVVM Toolkit中提供的一些帮助程序。


查看完整回答
反对 回复 2019-10-25
  • 3 回答
  • 0 关注
  • 1670 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信