2016-08-16 1 views
0

У меня есть ListView, который связан с ViewModel. Я хочу выбрать ListViewItem, который щелкнул правой кнопкой мыши, а также вызвать триггер, чтобы изменить атрибут ViewModel. (Режим выбора должен быть единым).Как обращаться с правым кликом по элементу ListViewItem, когда ListView имеет ItemTemplate?

<ListView MinHeight="50" MaxHeight="120" 
ItemsSource="{Binding Path=DisplayItems}" SelectedItem="{Binding Path=SelectedDisplayItem, Mode=TwoWay}" 
ItemTemplate="{StaticResource SelectedDisplayItemTemplate}" 
IsItemClickEnabled="False" 
helpers:AttachedCommand.Command="{Binding Path=Commands[NavigateToDisplayItem]}" 
helpers:AttachedCommand.Event="Tapped" /> 

Я попытался обработки справа постучала событие в ListView, но я не мог получить предмет, который был использован. Как изменить выбранный элемент по правому клику, а также выбрать SelectedDisplayItem в качестве элемента Right clicked, если он выбран?

+0

Поскольку вы устанавливаете 'ItemTemplate' в' SelectedDisplayItemTemplate', что происходит, когда вы установите 'RightTapped' событие там? – AVK

+0

Ну, так как его шаблон и получает его содержимое из файла стиля, я бы не хотел ставить туда RightTapped. – AbsoluteSith

+0

Возможно, вы можете сделать свой itemtemplate как usercontrol и обработать RightTapped там. – tao

ответ

0

Попробуйте сделать это с поведений

<ListView 
    x:Name MainListView 
    MinHeight="50" 
    MaxHeight="120" 
    ItemsSource="{Binding DisplayItems}" 
    SelectedItem="{Binding SelectedDisplayItem, Mode=TwoWay}" 
    ItemTemplate="{StaticResource SelectedDisplayItemTemplate}"> 
    <i:Interaction.Behaviors> 
     <core:EventTriggerBehavior 
      EventName="RightTapped"> 
      <core:InvokeCommandAction 
        Command="{Binding YourCommand}" 
        CommandParameter="{Binding ElementName=MainListView, Path=SelectedItem}"/> 
      </core:EventTriggerBehavior> 
    </i:Interaction.Behaviors> 
</ListView> 
Смежные вопросы