Ответ 1
Обеспечьте Globals.ThisAddIn общедоступным. Вы также можете получить это, если используете файл ресурсов, и в этом случае вам также необходимо убедиться, что модификатор доступа настроен на общедоступный.
Я столкнулся с некоторыми проблемами с привязкой WPF к статическому свойству. В моем приложении есть класс под названием Globals, который содержит статическое свойство ThisAddIn. Этот объект позволяет мне получить доступ к свойству User, которое в основном является тем, что я хочу использовать в моем Binding. Итак, мой XAML выглядит так:
<TextBlock Text="{Binding Path=User.Name
, Source={x:Static Member=s:Globals.ThisAddIn}}" />
Пространство имен s объявлено вверху следующей строкой:
xmlns:s="clr-namespace:ConsoleApplication16.Model"
Я нашел массу различных подходов к тому, как ссылаться на статическое свойство в XAML, но ни один из них не работал, кроме этого, что также кажется наиболее логичным для меня. Некоторые образцы, которые я нашел, не использовали Path или Member.
После некоторого тестирования я нашел правильный способ сделать это, используя "x: Static Member", чтобы определить класс и статическое свойство, которое вы хотите использовать, тогда как Path определяет правильные свойства внутри этого объекта, как обычный привязка.
Хотя это решение компилируется без каких-либо жалоб, появляется XAMLParseException, прямо сообщающее мне, что значение StaticExtension не может быть разрешено для перечисления, статического поля или статического свойства.
Обеспечьте Globals.ThisAddIn общедоступным. Вы также можете получить это, если используете файл ресурсов, и в этом случае вам также необходимо убедиться, что модификатор доступа настроен на общедоступный.
В проекте выходной библиотеки вы должны убедиться, что генератор файлов Resource.resx был изменен как PublicResXFileCodeGenerator, а не ResXFileGodeGenerator по умолчанию.
Заменить следующий с...
Этот