我可以在WPF中使用InputBindings启用PreviewClick吗?

时间:2010-04-07 08:22:53

标签: wpf mvvm inputbinding

我想检测用户何时点击列表视图上的项目,而不使用事件,因为我执行命令绑定,我不喜欢所有行为的废话。我试过这个:

<ListView x:Name="MainList" Margin="2,8,6,8" Background="Black" 
   ItemsSource="{Binding Path=AssetsVM.Data, Mode=OneWay}" 
   BorderBrush="{x:Null}" >

    <ListView.InputBindings>
         <MouseBinding Command="{Binding Path=AssetsVM.SelectActivo}" 
            CommandParameter="{Binding ElementName=MainList, Path=SelectedItem}" 
            MouseAction="LeftClick" />
    </ListView.InputBindings>

如果我点击列表视图但不能处理这些项目,这样可以正常工作。我需要的是一种启用“预览”的方法或具有行为预览的MouseAction / Gesture。这些中的任何一个都可能吗?

1 个答案:

答案 0 :(得分:0)

当使用这样的命令驱动架构时,我通常使用AttachedCommandBehavior来解决微软没有使MouseBinding.Command成为DependencyProperty的事实。下面显示了如何使用此方法获得所需功能的示例:

<ListView x:Name="MainList" ItemsSource="{Binding Path=AssetsVM.Data, Mode=OneWay}">
    <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
            <Style.Setters>
                <Setter Property="acb:CommandBehavior.Event" Value="Selected" />
                <Setter Property="acb:CommandBehavior.Command" Value="{Binding DataContext.AssetsVM.SelectActivo, ElementName=MainList}" />
                <Setter Property="acb:CommandBehavior.CommandParameter" Value="{Binding}" />
            </Style.Setters>
        </Style>
    </ListView.ItemContainerStyle>
</ListView>