Я хотел бы спросить, почему CommandParameter
принимает противоположное значение.поскольку имена событий 'подразумевают, что события (Checked
и Unchecked
) сработали, и состояние IsChecked
должно было измениться, но это не тот случай, как если бы IsChecked еще не был назначен.Это не большая проблема, так как я все время могу предположить обратное, но как только я добавлю Triggers
для включения DataTrigger
, я не смогу узнать, является ли CommandParameter
обратным или нет!
<CheckBox IsChecked="{Binding CheckBoxChecked}">
<i:Interaction.Triggers>
<ia:DataTrigger Binding="{Binding LayoutManager.ShowZeroInv}" Value="Visible">
<i:InvokeCommandAction Command="{Binding SameCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type CheckBox}}, Path=IsChecked}" />
</ia:DataTrigger>
<i:EventTrigger EventName="Checked">
<i:InvokeCommandAction Command="{Binding SameCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type CheckBox}}, Path=IsChecked}" />
</i:EventTrigger>
<i:EventTrigger EventName="Unchecked">
<i:InvokeCommandAction Command="{Binding SameCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type CheckBox}}, Path=IsChecked}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</CheckBox>
Я нашел решение для работы с ним следующим образом:
<CheckBox IsChecked="{Binding CheckBoxChecked}">
<i:Interaction.Triggers>
<ia:DataTrigger Binding="{Binding IsVisible}" Value="Visible">
<i:InvokeCommandAction Command="{Binding SameCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type CheckBox}}, Path=IsChecked}" />
</ia:DataTrigger>
<i:EventTrigger EventName="Checked">
<i:InvokeCommandAction Command="{Binding SameCommand}">
<i:InvokeCommandAction.CommandParameter>
<sys:Boolean>True</sys:Boolean>
</i:InvokeCommandAction.CommandParameter>
</i:InvokeCommandAction>
</i:EventTrigger>
<i:EventTrigger EventName="Unchecked">
<i:InvokeCommandAction Command="{Binding SameCommand}">
<i:InvokeCommandAction.CommandParameter>
<sys:Boolean>False</sys:Boolean>
</i:InvokeCommandAction.CommandParameter>
</i:InvokeCommandAction>
</i:EventTrigger>
</i:Interaction.Triggers>
</CheckBox>
но я хотел знать, что происходит?Это из-за того, что состояние IsChecked
еще не изменилось, когда события запускаются, или из-за чего-то другого?