我已将复选框的Checked
事件绑定到方法。我也通过转换器将两个命令参数传递给该方法(实现IMultiValueConverter
)。在下面的代码中,两个CommandParameter
绑定分别为bool
类型和string
类型。
<CheckBox Name="cbTopLeftHeader" Content="Top Left Header">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Checked">
<i:InvokeCommandAction Command="{Binding IncludeCheckedCommand}">
<i:InvokeCommandAction.CommandParameter>
<MultiBinding Converter="{StaticResource MultiBindingConverter}" ConverterParameter="IncludeChecked">
<Binding ElementName="cbTopLeftHeader" Path="IsChecked"></Binding>
<Binding Source="{StaticResource TopLeft}"></Binding>
</MultiBinding>
</i:InvokeCommandAction.CommandParameter>
</i:InvokeCommandAction>
</i:EventTrigger>
</i:Interaction.Triggers>
</CheckBox>
如果我更换线路为什么呢?
<Binding ElementName="cbTopLeftHeader" Path="IsChecked"></Binding>
使用:
<Binding RelativeSource="{RelativeSource Self}" Path="IsChecked"></Binding>
在我的转换器中,IsChecked参数从类型bool
更改为类型DependencyProperty
(DependencyProperty.UnsetValue
)?
如何在不通过名称将元素绑定到自身的情况下传递Checked
属性?
答案 0 :(得分:1)
摆脱互动触发器并使用Command
的{{1}}和CommandParameter
属性:
CheckBox
或者坚持使用<CheckBox Name="cbTopLeftHeader" Content="Top Left Header" Command="{Binding IncludeCheckedCommand}">
<CheckBox.CommandParameter>
<MultiBinding Converter="{StaticResource MultiBindingConverter}" ConverterParameter="IncludeChecked">
<Binding RelativeSource="{RelativeSource Self}" Path="IsChecked"/>
<Binding Source="{StaticResource TopLeft}"></Binding>
</MultiBinding>
</CheckBox.CommandParameter>
</CheckBox>
绑定到CheckBox
的当前方法。 ElementName
的{{1}}不是{RelativeSource Self}
。