Silverlight中的程序化绑定

7
我在某件事上落后了,孩子们。这一直出现问题,我不知道发生了什么,所以希望我的家人能够帮助我。
在使用Silverlight时,当我在C#代码中创建绑定时,它们在应用程序运行时从未保持过。我的XAML中的声明性绑定似乎没问题,但是我在创建C#绑定时做错了什么。我希望有明显的错误我没有注意到。这里是一个典型的被破坏的绑定:
TextBlock tb = new TextBlock();
Binding b = new Binding("FontSize");
b.Source = this;
tb.SetBinding(TextBlock.FontSizeProperty, b);

你说的"crushed"是什么意思?绑定根本就不起作用吗? - Mark Ingram
是的,在运行时似乎没有任何影响。 - MojoFilter
10
我想给你投反对票,因为你使用了“homey”这个词。 :-) - Judah Gabriel Himango
2个回答

7

我刚刚尝试了您发布的完整代码,并进行了一些更改,它可以正常工作。我认为问题出在您用于SetBinding调用的元素不是您想要绑定的textblock。应该是:

TextBlock tb = new TextBlock();
Binding b = new Binding("FontSize");
b.Source = this;
tb.SetBinding(TextBlock.FontSizeProperty, b);

请确保“this”还有一个名为FontSize的公共属性,类型为double。如果“this”是用户控件,建议重命名该属性,以避免隐藏继承成员。


对,你说得对,那只是一个复制粘贴的错误。在这种情况下,this是一个自定义控件,我指的是它继承的FontSize属性。我发现这种问题随处可见。恐怕是我的操作导致了绑定的丢失,但我无法确定具体原因。 - MojoFilter

2

看起来至少从Silverlight 3.1开始,这个问题不再存在。无论如何,我都无法复现它。


我可以重现类似的东西 http://stackoverflow.com/questions/3217740/silverlight-4-setbinding-not-working - cmaduro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接