15e*_*153 3 data-binding wpf xaml attached-properties
我正在使用Jason Kemp的酷CueBanner课程来为WPF中的"水印"文本框:
<TextBox
hpext:CueBanner.Content="Find Text"
hpext:CueBanner.Padding="2,6,0,0"
/>
Run Code Online (Sandbox Code Playgroud)
Jason的代码以ContentPresenter编程方式创建,将其内容设置为CueBanner.Content,将子类添加ContentPresenter到Adorner子类,并在适当时显示它.
他的代码推断了ContentPresenter装饰控件的填充和边距,但我添加了,hpext:CueBanner.Padding所以我可以明确地将它设置为我更喜欢的值.
contentPresenter.Margin = CueBanner.GetPadding(adornedElement);
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.
这是麻烦:它有效,但我想绑定它.
var binding = new Binding("hpext:CueBanner.Padding") { Source = adornedElement };
BindingOperations.SetBinding(contentPresenter, ContentPresenter.MarginProperty, binding);
Run Code Online (Sandbox Code Playgroud)
但是我将什么用于源属性的路径? "hpext:CueBanner.Padding"不起作用,它不应该工作; 那个名称空间不存在.没有喜悦"CueBanner.Padding"和"(CueBanner.Padding)"."MyProject.Extensions.CueBanner.Padding"也不起作用,我不明白为什么它应该.
我看不到任何看起来有用的东西PropertyPath,但是当我读到我的思绪开始变得有点空白时.
我应该只是在XAML中这样做,不是吗?
您可以从附加属性直接创建PropertyPath,如下所示:
var binding = new Binding
{
Path = new PropertyPath(CueBanner.PaddingProperty), // here
Source = adornedElement
};
Run Code Online (Sandbox Code Playgroud)