2010-04-07 3 views
0

명령 바인딩을 할 때 이벤트를 사용하지 않고 사용자가 목록보기에서 항목을 클릭하면이를 감지하고 모든 비논리적 인 행동을 좋아하지 않습니다. 나는 이것을 시도했다 :WPF에서 InputBindings를 사용하여 PreviewClick을 활성화 할 수 있습니까?

<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를 사용하는 방법이 필요합니다. 이 중 하나가 가능합니까?

답변

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>