Код, который вы показали, на самом деле не делает то же самое.Это отличается тремя способами:
- Вы изменяете свойство Source XmlDataProvider
- Вы предоставляете другой XPath для XmlDataProvider (MenuTextClimate / @ Header вместо WpfApplication).
- Вы также предоставляете другой XPath в выражении привязки.
Проблема может заключаться просто в том, что что-то или все из этого неправильно.(XPath выглядят особенно подозрительно, потому что они выглядят так, как будто они предполагают совершенно другую структуру XML-документа. Хотя, поскольку вы также предоставляете другой XML-документ, возможно, это нормально. По информации, предоставленной до сих пор, это невозможно определить).первое, что я хотел бы сделать, это попытаться заставить ваш C # делать то же самое, что и ваш Xaml - тот же URI и те же XPath.Если это сработает, вам будет проще увидеть, какая из трех разных причин вызывает проблему.
Либо включите вывод отладочной информации WPF.Если вы используете .NET 3.5 sp1 или более раннюю версию, она обычно включена по умолчанию для регистрации на уровне ошибок сообщений о привязке данных.(Ошибки привязки данных появляются в окне «Вывод».) Начиная с .NET 4.0 Microsoft отказалась от него, поэтому вы не увидите его, если не попросите об этом.Вы включаете его с помощью диалогового окна «Параметры» в Visual Studio - оно находится в разделе «Отладка» -> «Окно вывода».Убедитесь, что привязка данных настроена на отображение ошибок.Или для получения более подробной информации, прокрутите его до конца, а затем включите полную регистрацию, добавив следующее:
PresentationTraceSources.SetTraceLevel(NewBinding, PresentationTraceLevel.High);
Это должно показать вам полную информацию о том, что привязка данных пытается сделать с вашей привязкой, и эточасто довольно хороший способ выяснить, почему что-то не работает.