Вопрос
В моем приложении я хочу изменить размер изображения большого пальца, когда я нажимаю на него, все изображения находятся в ItemTemplate, где его свойство Source привязано к URL-адресу изображения.
Я пытаюсь что-то вроде этого (это в моем файле DataTemplate)
<TextBlock>
<Hyperlink TextDecorations="None"
Command="helpers:StatusesCommands.ShowPicture"
CommandParameter="{Binding}">
<Image Source="{Binding Path=FirstPictureUrl}" Margin="5" />
</Hyperlink>
</TextBlock>
Но в обработчике команд я не знаю, как добраться до этого изображения. Свойство OriginalSource для ExecutedRoutedEventArgs имеет значение HyperLink, а для Source - мой элемент управления.
Возможно, можно установить CommangParameter для моего вложенного изображения, но я не знаю, как это сделать. У вас есть идеи, как решить эту проблему?
Решение
Вы связываете параметр команды с контекстом данных, поэтому у вас будет доступ к пути изображения в параметре команды, если вы правильно приведете параметр.
Чтобы передать изображение в качестве параметра команды напрямую, сначала назовите изображение:
<Image x:Name="myImg" Source="{Binding Path=FirstPictureUrl}" Margin="5"/>
Привязать CommandParameter к этому изображению:
CommandParameter="{Binding ElementName=myImg}"
Непонятно, где вы обрабатываете эту команду. Если вы обрабатываете его в коде позади этого XAML, вы можете назвать элемент Image и ссылаться на него по имени в коде файла. Тем не менее, обычно лучше передавать команду в качестве параметра. Иногда команда обрабатывается далеко от места ее запуска.