WPF MultiBinding Converter对象类型

时间:2017-09-05 03:06:21

标签: c# wpf multibinding relativesource

我已将复选框的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更改为类型DependencyPropertyDependencyProperty.UnsetValue)?

如何在不通过名称将元素绑定到自身的情况下传递Checked属性?

1 个答案:

答案 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}