WPF MultiBinding 转换器对象类型
WPF MultiBinding Converter Object Type
我已将复选框的 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
属性?
删除交互触发器并使用 CheckBox
:
的 Command
和 CommandParameter
属性
<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>
或者坚持使用 ElementName
绑定到 CheckBox
的当前方法。 InvokeCommandAction
的 {RelativeSource Self}
不是 CheckBox
。
我已将复选框的 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
属性?
删除交互触发器并使用 CheckBox
:
Command
和 CommandParameter
属性
<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>
或者坚持使用 ElementName
绑定到 CheckBox
的当前方法。 InvokeCommandAction
的 {RelativeSource Self}
不是 CheckBox
。