wpf - 为什么CommandParameter传递CheckBox.IsChecked的逆值
问题描述
我想问为什么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
尚未改变还是因为其他原因?
解决方案
但我想知道发生了什么?是不是因为
IsChecked
触发事件时状态尚未更改...
不。 的IsChecked
属性CheckBox
已按预期在Checked
/Unchecked
事件被触发时设置。
……还是因为别的原因?
是的,这是因为在引发事件之前绑定已解决。因此,在您实际与.CommandParameter
_true
false
CheckBox
CheckBox
推荐阅读
- angular - 角度变化检测不适用于主题
- react-native - 仅构建 Expo Bare Workflow React Native App ios 版本时出错
- reactjs - 我的提交处理程序在反应中无法正常工作
- css - 自定义按钮中的 bootstrap 5 文本颜色对比度
- python - python回归:用新数据预测模型
- ansible - 如何在 Ansible 输出日志中显示主机名?
- php - 使用php将json数据解析为html
- javascript - 单击html中的同一颗星时如何取消选择所有选定的评级星?
- flutter - 如何处理 crashlytics 上的太多错误?
- wordpress - 问题尾随斜杠 Wordpress 多站点