我有一個非常奇怪的問題。我試圖將一個屬性綁定到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