提示为自定义/用户控件的WPF TextBox

时间:2014-01-02 10:39:14

标签: c# .net wpf xaml textbox

所以,我试图设计尽可能简约的UI,为此,我需要在文本框中提供提示,就像android一样。我找到了很多问题的解决方案(参见Watermark / hint text / placeholder TextBox in WPFHow can I add a hint text to WPF textbox?)但是每个解决方案似乎都使​​用了大量的XAML代码,样式,触发器和排序。我想要做的是,我想有一个文本框子类,它有一个HintText属性,我可以在任何地方使用,但到目前为止,我还没有成功。这是我最接近的:

<TextBox x:Class="MyProgram.CustomControls.HintTextBox"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" Text="ASDF"
             d:DesignHeight="174" d:DesignWidth="708">
    <TextBox.Resources>
        <VisualBrush x:Key="VB">
            <VisualBrush.Visual>
                <Label Content="{Binding Path=HintText}" Foreground="LightGray" FontSize="25"/>
            </VisualBrush.Visual>
        </VisualBrush>
    </TextBox.Resources>
    <TextBox.Style>
        <Style TargetType="TextBox">
            <Setter Property="Background" Value="{StaticResource VB}"/>
        </Style>
    </TextBox.Style>
</TextBox>

public partial class HintTextBox : TextBox
{
    public HintTextBox()
    {
        InitializeComponent();
    }

    public static DependencyProperty HintTextProperty = DependencyProperty.Register("HintText", typeof(String), typeof(HintTextBox));
}

缺少触发器定义,但这不是主要问题。我的主要问题是我似乎无法绑定HintText属性。我无法通过XAML分配它,并且由于某种原因我无法绑定它。我也尝试绑定到TextBox自己的Text属性,看看它是否可行,但事实并非如此。我究竟做错了什么?或者我是否完全咆哮错误的树?

编辑:我也需要为PasswordBox提供相同的功能,无论如何都没有...为什么他们分别将TextBox和PasswordBox分开?

1 个答案:

答案 0 :(得分:0)

问题是,VisualBrush资源“VB”可以在所有元素之间共享,标签内容不能绑定。

您可以尝试使用我的样本TextBox with null text hint