Может быть, вы можете попробовать что-то вроде этого, как объяснено здесь :
<Button cal:Message.Attach="[Event Click] = [Action Handle($dataContext)]" Style="{StaticResource BtnSidebar}">
<Image Margin="20" Source="{Binding IconPath}"/>
</Button>
Это передаст модель полного вида (DataContext
) вашему обработчику.
Чтобы передать определенное свойство вашей модели представления , используйте длинный синтаксис, указанный здесь :
<Button Style="{StaticResource BtnSidebar}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cal:ActionMessage MethodName="Handle">
<cal:Parameter Value="{Binding ViewModel}" />
</cal:ActionMessage>
</i:EventTrigger>
</i:Interaction.Triggers>
<Image Margin="20" Source="{Binding IconPath}"/>
</Button>
с i
, определенным как
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
Вы также можете изменить DataContext
свойство Button
на интересующее свойство, например:
<Button DataContext="{Binding ViewModel}" cal:Message.Attach="[Event Click] = [Action Handle($dataContext)]" Style="{StaticResource BtnSidebar}">
<Image Margin="20" Source="{Binding IconPath}"/>
</Button>
, чтобы только правильное свойство передавалось вашему хендлеру, но эточувствует себя как взломатьПри щелчке это передаст DataContext
Button
как параметр вашего Handle
метода, который должен быть NavigationMenuItem
.