我想问为什么在使用RelativeSource={RelativeSource Self}
时总是得到空值。
<TextBlock Tag="{Binding SomeValue}" Text="{Binding SomeValue, Mode=TwoWay, NotifyOnTargetUpdated=True, Converter={StaticResource enumConverter}, ConverterParameter={x:Type EnumModel:SomeEnum},UpdateSourceTrigger=PropertyChanged}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="TargetUpdated">
<i:InvokeCommandAction Command="{Binding DataContext.SomeCommand, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type v:MyView}}}"
CommandParameter="{Binding Tag, RelativeSource={RelativeSource Self}}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBlock>
我已经通过使用ElementName
来解决它,如下所示:
<TextBlock x:Name="txtSortDirection" Tag="{Binding SomeValue}" Text="{Binding SomeValue, Mode=TwoWay, NotifyOnTargetUpdated=True, Converter={StaticResource enumConverter}, ConverterParameter={x:Type EnumModel:SomeEnum},UpdateSourceTrigger=PropertyChanged}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="TargetUpdated">
<i:InvokeCommandAction Command="{Binding DataContext.SomeCommand, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type v:MyView}}}"
CommandParameter="{Binding Tag, ElementName=txtSortDirection}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBlock>
但是我仍然想知道为什么我在使用RelativeSource={RelativeSource Self}
时会得到null?
答案 0 :(得分:1)
RelativeSource={RelativeSource Self}
用于获取元素自身作为Binding
中的源。
并且仅对UIElement
生效。
但是您可以在i:InvokeCommandAction
中的Trigger
上使用它, 它不是UIElement
。