У меня возникла очень странная проблема. Я пытаюсь связать свойство с 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