【问题标题】:WPF Style Binding to Base StyleWPF 样式绑定到基本样式
【发布时间】:2012-06-13 13:12:25
【问题描述】:

我在 wpf 中有一个基本样式和一个样式。

基本样式是:

<Style x:Key="BaseTextBox" TargetType="{x:Type TextBox}">
    <Setter Property="Background" Value="#DDFFDD" />
    <Setter Property="MinWidth" Value="75" />
    <Setter Property="behaviors:OCCInteraction.Triggers" Value="{StaticResource ResourceKey=validationTrigger}" />
    <Style.Triggers>
        <Trigger Property="Validation.HasError" Value="true">
            <Setter Property="Background" Value="#FFDDDD"/>
            <Setter Property="ToolTip" Value="{Binding Path=(Validation.Errors)[0].ErrorContent, RelativeSource={x:Static RelativeSource.Self}}" />
        </Trigger>
    </Style.Triggers>
</Style>

而具体的风格是:

<Style x:Key="EditableTextBox" TargetType="{x:Type TextBox}" BasedOn="{StaticResource ResourceKey=BaseTextBox}">
    <Setter Property="Validation.ErrorTemplate">
        <Setter.Value>
            <ControlTemplate>
                <StackPanel Orientation="Horizontal">
                    <Border BorderBrush="Red" BorderThickness="1" Padding="0" Margin="0">
                        <AdornedElementPlaceholder Margin="0"/>
                    </Border>
                    <TextBlock Text="test" />
                    <Image Style="{StaticResource ResourceKey=WarningImage}"/>
                    <TextBlock Text="{Binding Path=(Validation.Errors)[0].ErrorContent, RelativeSource={RelativeSource Mode=Self,AncestorLevel=2}}" />

                </StackPanel>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

现在我想将验证错误文本添加到图像旁边的文本块中。但是相同的绑定路径不起作用。我尝试了不同的绑定,但我不知道如何访问与基本样式相同的绑定。

感谢您的帮助:)

【问题讨论】:

    标签: wpf inheritance binding styles


    【解决方案1】:

    你试过没有 AncestorLevel 吗?你应该是同一个对象。

    【讨论】:

    • 嘿,是的,我尝试了与基本样式相同的方法,几个相对源配置等。通常我会使用祖先级别,但这似乎不适用于样式:(
    【解决方案2】:

    您不能使用Mode=Self 和AncestorLevel 属性。只需使用Mode=Self。

    当您尝试在可视化树中到达该控件的父级时使用祖先级别。

    【讨论】:

    • 嘿,是的,我知道'AncestorLevel'的功能。这段代码只是我“刚刚尝试”的一种状态。
    猜你喜欢
    • 2011-02-02
    • 1970-01-01
    • 1970-01-01
    • 2013-12-10
    • 1970-01-01
    • 1970-01-01
    • 2013-07-10
    • 2016-01-11
    • 1970-01-01
    相关资源
    最近更新 更多