0

我是 WPF 样式部分的新手。我想要做的是在设置器中获取附加属性的值,例如:

<Trigger Property="SomeProperty" Value="SomeValue">
    <Setter Property="SomeProperty"
            Value="(My attached property, let's say lcl:MyClass.MyString)"/>
</Trigger>

我知道你可以使用 a {TemplateBinding lcl:MyClass.MyString}in a来达到这种效果ControlTemplate。我的问题是:你能以一种风格做到这一点,而不使用ControlTemplate?

4

1 回答 1

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=。

于 2013-06-23T21:29:42.600 回答