0

ユーザーがリストビューのアイテムをクリックしたことを検出したいのですが、コマンドバインディングを行うときにイベントを使用せずに、動作のすべてのナンセンスが好きではありません。私はこれを試しました:

<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 を持つ方法です。これらのいずれかが可能ですか?

4

1 に答える 1

0

このようなコマンド駆動型アーキテクチャを使用する場合、私は通常、AttachedCommandBehaviorを使用して、Microsoft が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>
于 2010-04-07T20:21:23.300 に答える