Я пытаюсь использовать функции взаимодействия для двойного щелчка мыши по стандартным средствам управления изображениями. Элемент управления Image находится в UserControl, и метод, который должен обрабатывать двойной щелчок мыши, находится на модели представления. Код выглядит следующим образом:WPF: Мышь дважды щелкните по изображению, используя взаимодействие
1) UserControl:
<ItemsControl Grid.Row="0" ItemsSource="{Binding SelectedEventPhotoList}"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Name="SelectedListView">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Rows="1" Columns="3"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Image Source="{Binding}" Stretch="None">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDoubleClick">
<ei:CallMethodAction MethodName="DblClick" TargetObject="{Binding}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Image>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
3) Вид модели:
public void DblClick()
{
MessageBox.Show("Double click!");
}
Но, это не работает.
UPDATE:
Я сделал это, но он не работает:
1) XAML:
<ItemsControl Grid.Row="0" ItemsSource="{Binding SelectedEventPhotoList}"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Name="SelectedListView">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Rows="1" Columns="3"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Image Source="{Binding}">
<Image.InputBindings>
<MouseBinding MouseAction="LeftDoubleClick" Command="{Binding MouseDoubleClickCommand}"/>
</Image.InputBindings>
</Image>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
2) Вид модели:
public DelegateCommand MouseDoubleClickCommand { get; private set; }
В конструкторе :
MouseDoubleClickCommand = new DelegateCommand(DblClick);
И добавил метод:
public void DblClick()
{
MessageBox.Show("Double click!");
}
Не работает. Пожалуйста, ознакомьтесь с разделом обновления в оригинальном посте, чтобы узнать, что я сделал. – tesicg
Кстати, я использую Призм. – tesicg
См. Мое редактирование. Вероятно, вы должны использовать RelativeSource для привязки к команде. – mm8