我有一个非常奇怪的问题。我试图将一个属性绑定到DataContext,但它不起作用。这是我在做什么(在Window.Resources部分):无法绑定到DataContext
<myNS:MyClass x:Key="myObj" MyProp="{Binding}"/>
在其他地方的代码,我设置这样的数据上下文:
myWindow.DataContext = MyNameSpace.MySingleton.Instance;
我没有得到任何错误,但绑定没有发生。所以我添加了一个调试器,看看我能想出了事情的原委:
<myNS:MyClass x:Key="myObj" MyProp="{Binding Converter={StaticResource Debug}}"/>
我在转换器中设置一个断点,正在传递的值为空。考虑到事情不符合规定,我在设置DataContext的行上设置了一个断点。它首先被击中,然后是转换器中的断点。所以DataContext在绑定发生之前被设置。
最后,要尽量找些工作,我改变了这个:
<myNS:MyClass x:Key="myObj" MyProp="{Binding Source={x:Static myNS:MySingleton.Instance}}"/>
这工作。
我真的不喜欢散布这样的绑定。我宁愿只绑定到DataContext。有问题的窗口包含许多绑定到DataContext上的属性,这些都可以正常工作。
任何人都可以解释我在这里做错了吗?
JAB
“**代码中的其他地方**,我设置了数据上下文”。究竟在哪里? – adPartage
如果该类不是从FrameworkElement派生的,那么它不是Visual Tree的一部分,因此DataContext不会自动“继承”。 – Silvermind