我是WPF样式部分的新手。我想要做的是在setter中获取附加属性的值,例如:
<Trigger Property="SomeProperty" Value="SomeValue">
<Setter Property="SomeProperty"
Value="(My attached property, let's say lcl:MyClass.MyString)"/>
</Trigger>
我知道您可以使用{TemplateBinding lcl:MyClass.MyString}
中的ControlTemplate
获得相应的效果。我的问题是:您是否可以在不使用ControlTemplate
的情况下以风格执行此操作?
答案 0 :(得分:0)
您可以尝试使用:
<Setter Property="SomeProperty" Value="{Binding Path=(lcl:MyClass.MyString), RelativeSource={RelativeSource self}}"/>
如果附加属性适用于元素作为您的样式。如果没有,您可以使用RelativeSource或ElementName来查找相应的元素。
我不确定你是怎么做到的,因为你的代码缺乏细节。下面的代码有效:
<UserControl.Resources>
<Style x:Key="LabelStyle" TargetType="{x:Type Label}">
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Content"
Value="{Binding Path=(TestWebBrowser:AttachP.ValueEditorState), RelativeSource={RelativeSource self}}"/>
</Trigger>
</Style.Triggers>
</Style>
</UserControl.Resources>
<StackPanel>
<Label x:Name="label" TestWebBrowser:AttachP.ValueEditorState="HelloWorld" Style="{StaticResource LabelStyle}"/>
<Button Content="Disable Label" Click="Button_Click"/>
</StackPanel>
Button的click事件处理程序将Label的IsEnabled设置为false以触发触发器。请注意,您必须在绑定中使用Path = with括号。