У меня есть два вложенных элемента Grid (FrameworkElement) в моем приложении.
<UserControl xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity">
<Grid x:name="OuterGrid">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonDown">
<i:InvokeCommandAction x:Name="TheOuterCommand" Command="{Binding OuterCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
<Grid x:name="InnerGrid">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonDown">
<i:InvokeCommandAction x:Name="TheInnerCommand" Command="{Binding InnerCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Grid>
</Grid>
</UserControl>
Каждая из InvokeCommands присоединена к DelegateCommand (из библиотек Prism) в модели представления.
OuterCommand = new DelegateCommand(OuterCommandMethod, e => true);
InnerCommand = new DelegateCommand(InnerCommandMethod, e => true);
В данный момент EventTrigger на InnerGrid также вызывает событие на OuterGrid из-за того, что MouseLeftButtonEvent не обрабатывается вуровень InnerGrid .
Есть ли способ уведомить EventTrigger , что он обработан и не должен всплывать до OuterGrid?
В настоящий момент все, что я могу сделать, - это иметь оболочку FrameworkElement вокруг InnerGrid, которая использует событие в коде XAML для установки события в обработку.У кого-нибудь есть другие идеи?
---- Edit ---- В конце я включил MVVM Light в свое приложение и заменил InvokeCommandAction на RelayCommand.Теперь это работает, как я и хотел.Я отмечу ответ Брайанта как победителя, который дал мне предложение.