WPF多插入转换器对象类型



我已将复选框的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>

with:

<Binding RelativeSource="{RelativeSource Self}" Path="IsChecked"></Binding>

在我的转换器中,检查参数从类型bool更改为DependencyProperty类型(DependencyProperty.UnsetValue)?

如何实现Checked属性而不将元素按名称绑定到自身?

删除相互作用触发器并使用CommandCommandParameter属性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>

或使用ElementName与您当前绑定到CheckBox的方法。InvokeCommandAction{RelativeSource Self}不是CheckBox

相关内容

  • 没有找到相关文章

最新更新