在我探索WPF的旅程中,我看到了一些非常不同的附加属性使用方式,想知道有哪些不同的用法?
我见过相当平凡的用法,比如在Grid和Canvas中发现的用法,还有一些很酷的技巧,允许绑定到集合而无需设置器。您还发现了哪些应用程序适用于AttachedProperties?(代码示例非常有帮助!)
在我探索WPF的旅程中,我看到了一些非常不同的附加属性使用方式,想知道有哪些不同的用法?
我见过相当平凡的用法,比如在Grid和Canvas中发现的用法,还有一些很酷的技巧,允许绑定到集合而无需设置器。您还发现了哪些应用程序适用于AttachedProperties?(代码示例非常有帮助!)
请查看附加的行为。
http://www.codeproject.com/KB/WPF/AttachedBehaviors.aspx //不确定此链接的质量。这是我在谷歌上找到的第一个链接。
将行为附加到对象 只是意味着让对象执行 它本身无法完成的任务
通过附加行为,您实际上可以做的事情非常多,但通常可以减少扩展控件或向代码后面添加逻辑的需要。
当您想要向现有类添加属性时,请使用自定义附加属性: 在 Silverlight 4 中可用之前,我创建了 一个 DataGrid 的附加属性,允许指定列的宽度为 *,以占用所有可用空间:
附加行为是我迄今为止看到的最有用的东西,正如詹姆斯所说。 我经常使用的一个是将文本放入文本框,然后在获得焦点时使其消失。
包含示例输入的灰色字符串非常适合此操作。 因此,对于“名称”文本框,您可能会有字符串“Joe Bloggs”。
这里是我发现的一些更高级的用法:
http://csharperimage.jeremylikness.com/2010/03/mef-instead-of-prism-for-silverlight-3.html
通过托管可扩展性框架(MEF)提供XAML资产的自定义导出。http://csharperimage.jeremylikness.com/2010/03/custom-export-providers-with-custom.html
(与#1的项目符号相结合)
验证(将验证行为附加到控件)
本地化(我看到使用附加属性来访问资源并提供翻译后的值)
显然,行为也是另一个重要的方面。
将ICommand附加到任何事件:
http://geekswithblogs.net/HouseOfBilz/archive/2009/08/27/adventures-in-mvvm-ndash-binding-commands-to-any-event.aspx对于我们这些使用MVVM的人来说非常棒。