I have bound the Checked
event of a checkbox to a method. I am also passing two Command Parameters to that method through a converter (implementing IMultiValueConverter
). In the code below, the two CommandParameter
bindings are of type bool
and type string
respectively.
<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>
Why is it that if I replace the line:
<Binding ElementName="cbTopLeftHeader" Path="IsChecked"></Binding>
With:
<Binding RelativeSource="{RelativeSource Self}" Path="IsChecked"></Binding>
In my converter the IsChecked parameter changes from type bool
to type DependencyProperty
(DependencyProperty.UnsetValue
)?
How can I achieve passing the Checked
property without having the element bind to itself by name?
Get rid the interaction trigger and use the
Command
andCommandParameter
properties of theCheckBox
:Or stick with your current approach of binding to the
CheckBox
usingElementName
.{RelativeSource Self}
of anInvokeCommandAction
is not aCheckBox
.