Значение StaticExtension не может быть разрешено - PullRequest
53 голосов
/ 19 марта 2012

У меня проблемы с привязкой WPF к статическому свойству. В моем приложении есть класс с именем Globals , который содержит свойство static для 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 не может быть преобразовано в перечисление, статическое поле или статическое свойство.

Ответы [ 2 ]

83 голосов
/ 29 октября 2013

Убедитесь, что Globals.ThisAddIn публично.

Вы также можете получить это, если используете файл ресурсов, и в этом случае вам также нужно убедиться, что модификатор доступа установлен на Public:

enter image description here

32 голосов
/ 17 апреля 2017

В проекте выходной библиотеки вы должны убедиться, что генератор файла Resources.resx был изменен как PublicResXFileCodeGenerator вместо ResXFileGodeGenerator по умолчанию.

Заменить следующее на ...

Not public resource

Этот

correct public resource

...