是否可以用附加属性替换此自定义WPF TextBox控件?

是否可以用附加属性替换此自定义WPF TextBox控件?,wpf,data-binding,resources,controltemplate,attached-properties,Wpf,Data Binding,Resources,Controltemplate,Attached Properties,我有一个扩展WPFTextBox控件的简单控件。基本思想是通过启用文本框在其内部显示自己的标签(当其为空时),来节省UI中的空间 我在其中声明了一个名为Label的dependencProperty,并将TextBox.Template属性设置为ControlTemplate。ControlTemplate是默认的Windows Aero XAML,在控件后面添加了一个TextBlock,用于显示TextBox.Text属性的值。其可见性属性与转换器绑定,以便在文本属性为空时可见。(有很多,而且

我有一个扩展WPF
TextBox
控件的简单控件。基本思想是通过启用
文本框
在其内部显示自己的标签(当其为空时),来节省UI中的空间

我在其中声明了一个名为
Label
dependencProperty
,并将
TextBox.Template
属性设置为
ControlTemplate
ControlTemplate
是默认的Windows Aero XAML,在控件后面添加了一个
TextBlock
,用于显示
TextBox.Text
属性的值。其
可见性
属性与
转换器绑定,以便在
文本
属性为空时可见。(有很多,而且大部分都很无聊,所以请原谅滚动条)

但是包含附加属性的
TextBoxProperties
类不是静态的

更新>>>

感谢H.B.我发现我可以使用以下代码访问
ControlTemplate

ControlTemplate labelControlTemplate = 
    (ControlTemplate)Application.Current.FindResource("LabelTextBoxTemplate");

您应该能够从以下位置访问
应用程序.Resources
应用程序.Current.Resources

绑定可能是这样的:

{绑定(附:TextBoxProperties.Label),
RelativeSource={RelativeSource AncestorType=TextBox}

如果包含属性的类是静态的,则bindng引擎将查看属性是否在
文本框中设置,它不关心声明的类。

它工作得很好!非常感谢。我永远不会停止惊讶于你能在WPF中创建什么而不创建用户控件!
Text="{Binding Path=(Attached:TextBoxProperties.Label), 
    Source={x:Static Attached:TextBoxProperties}, FallbackValue=''}"
ControlTemplate labelControlTemplate = 
    (ControlTemplate)Application.Current.FindResource("LabelTextBoxTemplate");