首页 / C# / c#-WPF解析绑定表达式
c#-WPF解析绑定表达式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#-WPF解析绑定表达式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1276字,纯文字阅读大概需要2分钟。
内容图文
![c#-WPF解析绑定表达式](/upload/InfoBanner/zyjiaocheng/677/2b90650dddbd4d4a875478893e53bf1b.jpg)
有什么办法可以将包含绑定表达式的字符串转换为Binding对象?
一个简单的示例是“ {Binding Path}”,
要么:
“ {Binding RelativeSource = {RelativeSource Mode = FindAncestor,AncestorType = views:IPage},Path = TensileTestChange}”
实际的绑定表达式存储在XML中,它是XAML文档的高级表示.
解决方法:
您要问的是解析MarkupExtension.我无法直接找到WPF的实现(它包含在XamlReader.Parse调用链中的某个位置).
经过一番谷歌搜索,似乎没有现成的解决方案可用于此操作.但是,如果您有编写解析器的经验,则可以自己编写.在MSDN上给出了解析MarkupExtension的规范.
解决方法是,您可以伪造将绑定放在以下位置的控件:
string myBindingExpression = "{Binding MyProperty}";
var test = "<TextBlock xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" Text=\""
+ myBindingExpression + "\" />";
var result = XamlReader.Parse(test) as TextBlock;
var bindingExpression = result.GetBindingExpression(TextBlock.TextProperty);
Binding binding = bindingExpression.ParentBinding
这将创建一个TextBlock,并将绑定作为Text属性.它将为您提供绑定对象,该绑定对象具有根据绑定表达式设置的属性.
然后,您可以在任何地方应用绑定.
但是请记住,对于带有xmlns前缀的更复杂的示例,您需要在伪造的TextBlock中包括xmlns:views =“ …”,否则它将不知道如何处理前缀.
示例:< TextBlock xmlns:views =“ ...” xmlns =“ ...” Text =“ {Binding MyProperty}” />
内容总结
以上是互联网集市为您收集整理的c#-WPF解析绑定表达式全部内容,希望文章能够帮你解决c#-WPF解析绑定表达式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。