【问题标题】:How to bind a style's property?如何绑定样式的属性?
【发布时间】:2014-03-01 21:24:57
【问题描述】:

我有几个文本框,并希望为每个文本框添加水印(例如:文本框将包含文本“在此处输入名字”,直到您开始输入。)

通常我只会使用 RelativeSource 绑定,但我遇到了一个奇怪的错误,即样式中的 Label 不接受我扔给它的任何绑定。例如,以下 Binding 可以在除标签内容之外的任何地方使用:

{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=Title}



供参考的是我正在使用的代码。

TextBox 的 XAML:

<TextBox x:Name="textBox_test" Style="{StaticResource textBoxStyle_watermark}" ToolTip="Hello"


样式的 XAML:

<Style x:Key="textBoxStyle_watermark" TargetType="TextBox" xmlns:sys="clr-namespace:System;assembly=mscorlib">
        <Style.Resources>
            <VisualBrush x:Key="CueBannerBrush" AlignmentX="Left" AlignmentY="Center" Stretch="None">
                <VisualBrush.Visual>
                    <Label Padding="10,0,0,0" Content="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=ToolTip}" Foreground="Gray" />
                </VisualBrush.Visual>
            </VisualBrush>
        </Style.Resources>
        <Style.Triggers>
            <Trigger Property="Text" Value="{x:Static sys:String.Empty}">
                <Setter Property="Background" Value="{StaticResource CueBannerBrush}" />
            </Trigger>
            <Trigger Property="Text" Value="{x:Null}">
                <Setter Property="Background" Value="{StaticResource CueBannerBrush}" />
            </Trigger>
            <Trigger Property="IsKeyboardFocused" Value="True">
                <Setter Property="Background" Value="White" />
            </Trigger>
        </Style.Triggers>
    </Style>


任何帮助将不胜感激,谢谢。

【问题讨论】:

    标签: .net wpf xaml binding


    【解决方案1】:

    您遇到的问题与样式设置器值绑定无关,它工作正常。 Content 属性中的问题以及您将其绑定到父元素的方式。

    问题:您始终牢记,在 WPF 中,资源中的样式不被视为模板的一部分,因此 TemplatedParent 和 @ 987654323@ 将无法正常工作

    解决方案: 使用带有适当画笔的ControlTemplate 来代替,这将允许访问FrameworkElement(或TextBox)类型的父控件及其ToolTip 属性.

    【讨论】:

    • 感谢您告诉我有关 ControlTemplate 的信息!水印问题现已修复,但我遇到了选项卡控件的问题。不过我会把它作为一个不同的问题提交。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-20
    • 2018-01-10
    • 2015-01-02
    • 2021-02-22
    • 2014-08-15
    • 1970-01-01
    • 2014-05-23
    相关资源
    最近更新 更多