我正在尝试使用 Tag 属性作为绑定的源,但是当它到达转换器时该值为 null。
我究竟做错了什么?
消费者
<Button Style="{StaticResource AddNewItemButtonStyle}" Tag="blah" />
捆绑
<Style x:Key="AddNewItemButtonStyle" BasedOn="{StaticResource blueButtonStyle}"
TargetType="{x:Type Button}">
...
<AccessText Text="{Binding RelativeSource={RelativeSource Self},
Path=Tag, Converter={StaticResource AddNewItemForLabel}}">
</Style>
更新
我使用相同的策略为 ToolTip 添加了一个设置器,并且仅在第二次调用转换器(通过鼠标悬停触发)之后才起作用。
你能明白为什么绑定在第一次通过时不起作用吗?
除了我可以更可靠地使用的标签之外,还有其他地方吗?
第二次更新
根据 Phil 的输入,我将样式更改为下面的 xaml。我必须向样式添加模板属性吗?
<Style x:Key="AddNewItemButtonStyle" BasedOn="{StaticResource blueButtonStyle}" TargetType="{x:Type Button}">
<Setter Property="resx:ResxExtension.DefaultResxName" Value="Smack.Core.Presentation.Resources.MasterDetail"/>
<Setter Property="Content" >
<Setter.Value>
<StackPanel Orientation="Horizontal">
<Image Source="{resx:Resx ResxName=Smack.Core.Presentation.Resources.MasterDetail, Key=bullet_add}" Stretch="Uniform" />
<AccessText VerticalAlignment="Center" Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Tag, Converter={StaticResource AddNewItemForLabel}}" />
<ContentPresenter/>
</StackPanel>
</Setter.Value>
</Setter>
<Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Tag, Converter={StaticResource AddNewItemForToolTip}}"/>
<Setter Property="Command" Value="{Binding AddNewItemCommand}" />
</Style>