WPF MultiBinding 转换器对象类型

WPF MultiBinding Converter Object Type

我已将复选框的 Checked 事件绑定到一个方法。我还通过转换器(实现 IMultiValueConverter)将两个命令参数传递给该方法。在下面的代码中,两个 CommandParameter 绑定分别是 boolstring 类型。

<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:

CommandCommandParameter 属性
<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