Могу ли я включить PreviewClick, используя InputBindings в WPF? - PullRequest
0 голосов
/ 07 апреля 2010

Я хочу определить, когда пользователь нажимает на элемент в списке, без использования событий, так как я выполняю привязку команд, и мне не нравятся все глупости поведения. Я пробовал это:

<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 голосов
/ 08 апреля 2010

При использовании такой архитектуры, управляемой командами, я обычно использую 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>
...