My problem:

对于特定控件的样式,我没有't been able to figure out how I inside the ' Setter.Value'属性的setter字段可以绑定到该特定控件的属性B.更具体地说,我想在Button的Content属性的可视树内的图形元素上使用Foreground画笔值 . 这将确保图形元素始终具有为此按钮控件设置的前景颜色 .

What I try to achive:

我正在开发一个WPF应用程序,我有三个按钮控件:

  • DefaultButton

  • SpecialButton

  • ExtendedSpecialButton

DefaultButton是我通过带有ControlTemplate的样式在应用程序中定义按钮样式的地方 .

SpecialButton引入了一个不应该用于常规按钮的新属性 . 此属性将由我通过样式设置器定义的一个可视状态表示 . 除此之外,它与DefaultButton的外观相同 .

我通过基于DefaultButton的样式来定义这个SpecialButton的样式 . 在这种风格中,没有ControlTemplate只有一个MultiTrigger响应,基于几个属性条件设置av几个视觉属性:

<Style x:Key="SpecialButtonStyle" TargetType="{x:Type MyControls:SpecialButton}" BasedOn="{StaticResource DefaultButtonStyle}">
    <Style.Triggers>
        <MultiTrigger>
            <MultiTrigger.Conditions>
                <Condition Property="IsActive" Value="false"/>
                <Condition Property="IsMouseOver" Value="false"/>
            </MultiTrigger.Conditions>
            <Setter Property="BorderBrush" Value="{DynamicResource ButtonDisabledBorder}" />
            <Setter Property="Background" Value="{DynamicResource ButtonDisabledBg}" />
        </MultiTrigger>
    </Style.Triggers>
</Style>

这一切都很有效 .

下一步也没问题:我想在SpecialButton上 Build ExtendedSpecialButton,并在按钮内设置默认的形状内容 .

<Style x:Key="ExtendedSpecialButtonStyle" TargetType="{x:Type MyControls:ExtendedSpecialButton}" BasedOn="{StaticResource SpecialButtonStyle}">
    <Setter Property="Content">
        <Setter.Value>
            <Rectangle Fill="Black" Height="5" Width="15"></Rectangle>
        </Setter.Value>
    </Setter>
</Style>

DefaultButton的原始样式仍然存在 - 响应SpecialButton的IsActiveProperty的附加视觉状态仍然在我们身边 - 而ExtendedSpecialButton也继承了SpecialButton的MultiTrigger创建的视觉行为 .

我还成功地显示了此ExtendedSpecialButton应具有的图形元素 .

但是我希望这个图形元素的填充使用Foreground颜色 . 此前景色最初在DefaultButton中设置样式,并且对于两个第一个按钮工作正常 .

下面的代码是我目前认为应该如何进行这样的绑定 . 但这不起作用:

<Style x:Key="ExtendedSpecialButtonStyle" TargetType="{x:Type MyControls:ExtendedSpecialButton}" BasedOn="{StaticResource SpecialButtonStyle}">
    <Setter Property="Content">
        <Setter.Value>
            <Rectangle Fill="{Binding RelativeSource={RelativeSource TemplatedParent}}" Height="6" Width="20"></Rectangle>
        </Setter.Value>
    </Setter>
</Style>

有谁知道我可以做什么来设置绑定,以便它做我想要它做的事情?