gpt4 book ai didi

wpf - 以编程方式绑定(bind) WPF 中的附加属性

转载 作者:行者123 更新时间:2023-12-04 18:31:05 24 4
gpt4 key购买 nike

我正在使用 Jason Kemp's cool CueBanner class对于 WPF 中的“水印”文本框:

<TextBox 
hpext:CueBanner.Content="Find Text"
hpext:CueBanner.Padding="2,6,0,0"
/>

Don't tell Ayn Rand

Jason 的代码以编程方式创建一个 ContentPresenter,将其内容设置为 CueBanner.Content,将 ContentPresenter 添加到一个 Adorner 子类,并在适当的时候显示它。

他的代码从装饰控件的填充和边距推断出 ContentPresenter,但我添加了 hpext:CueBanner.Padding,所以我可以将它显式设置为我的值比较喜欢。

contentPresenter.Margin = CueBanner.GetPadding(adornedElement);

到目前为止一切顺利。

这就是问题所在:它可以工作,但我想改为绑定(bind)它。

var binding = new Binding("hpext:CueBanner.Padding") { Source = adornedElement };

BindingOperations.SetBinding(contentPresenter, ContentPresenter.MarginProperty, binding);

但是我应该使用什么作为源属性的路径? “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
};

关于wpf - 以编程方式绑定(bind) WPF 中的附加属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36505877/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com