C#WPF中的占位符文本框-Can';Don’不要约束从属属性

C#WPF中的占位符文本框-Can';Don’不要约束从属属性,c#,wpf,xaml,C#,Wpf,Xaml,我试图用一些变量占位符文本构建文本框。 但是属性“Placeholder Text”未在可视笔刷标签中使用 中的占位符文本始终为空 当我在外使用绑定时,绑定工作正常。我试着将绑定用作文本:,效果非常好 为什么不在… 我希望有人能帮助我 公共部分类占位符文本框:文本框 { #区域占位符文本 /// ///获取或设置显示在字段旁边的占位符文本 /// 公共字符串占位符文本 { 获取{return(String)GetValue(PlaceholderTextProperty);} set{S

我试图用一些变量占位符文本构建文本框。 但是属性“Placeholder Text”未在可视笔刷标签中使用

中的占位符文本始终为空

当我在外使用绑定时,绑定工作正常。我试着将绑定用作文本:
,效果非常好

为什么不在

我希望有人能帮助我


公共部分类占位符文本框:文本框
{
#区域占位符文本
/// 
///获取或设置显示在字段旁边的占位符文本
/// 
公共字符串占位符文本
{
获取{return(String)GetValue(PlaceholderTextProperty);}
set{SetValue(占位符文本属性,值);}
}
/// 
///已标识占位符文本依赖项属性
/// 
public static readonly dependencProperty PlaceholderTextProperty=dependencProperty.Register(“占位符文本”、typeof(字符串)、typeof(占位符文本框)、new PropertyMetadata(“键入一些文本”);
#端区
公共占位符文本框()
{
初始化组件();
this.phTextBox.DataContext=this;
}
}
您需要通过“
ElementName
”进行绑定,但这在
参考资料中有详细说明:

<Label 
    Content="{Binding Source={x:Reference phTextBox}, Path=PlaceholderText}"
            Foreground="LightGray" />


另请参见。

我不确定这是否是最好的方法,但请注意,当您显式设置控件的DataContext属性(无论是该属性还是某些私有视图模型)时,任何基于DataContext的标准绑定都将不再起作用。例如,
将不起作用,因为在控件的当前DataContex中需要SomeText属性。您应该删除赋值并使用Sajith建议的绑定,可以稍微简化为
Content=“{Binding placeholder text,RelativeSource={RelativeSource AncestorType=TextBox}
。或者使用类似
Content=“{Binding placeholder text,ElementName=phTextBox}的ElementName绑定“
Sajithsager和Clemens大家好,我尝试了两种变体,但不幸的是两种都不起作用。不会显示占位符文本:/