Позвольте мне объяснить мои требования:
У меня есть сетка, содержащая несколько флажков, подобных этому:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<CheckBox>1</CheckBox>
<CheckBox
Grid.Column="1">2</CheckBox>
</Grid>
Я четко знаю, как использовать mvvm light EventToCommand для привязки к команде (который определен в моей ВМ или где-либо еще).Но, как мы все знаем, у меня есть более 1 флажок.Поэтому я должен сделать это следующим образом:
<CheckBox
Content="1">
<i:Interaction.Triggers>
<i:EventTrigger
EventName="Checked">
<ml:EventToCommand
Command="{Binding SomeCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</CheckBox>
<CheckBox
Grid.Column="1"
Content="2">
<i:Interaction.Triggers>
<i:EventTrigger
EventName="Checked">
<ml:EventToCommand
Command="{Binding SomeCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</CheckBox>
Если у меня есть больше флажков, мне придется снова и снова нажимать C + V, чтобы каждый флажок имел одинаковое поведение EventToCommand.Что еще более раздражает, так это то, что у нас есть еще одно событие с именем Unchecked.Обычно обратный вызов для Checked и Uncheck абсолютно одинаков.Так что я должен снова и снова C + V ..........
И, наконец, мой XAML длинный и сложный!
====================================================
Я думаю окакой-то обходной путь, подобный этому:
Я изучил исходный код события Checked, а также события Unchecked и обнаружил, что оба они были RoutedEvent с режимом Bubble, что означает, что этот перенаправленный вызов события всплывает до сетки, котораясодержит их.Поэтому я написал свой код XAML следующим образом:
<Grid>
<i:Interaction.Triggers>
<i:EventTrigger
EventName="ToggleButton.Checked">
<ml:EventToCommand
Command="{Binding TestCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
......several check boxes......
</Grid>
Но приведенные выше коды не будут работать.Ни Checked, ни Unchecked не является событием ATTACHED.
Затем я удалил «ToggleButton.», Например:
<i:EventTrigger
EventName="Checked">
<ml:EventToCommand
Command="{Binding TestCommand}" />
</i:EventTrigger>
Все еще не работает!: (
События должны пузыриться до сетки, не так ли?
Итак, у кого-нибудь есть хорошие идеи по этому поводу? Спасибо!