web-dev-qa-db-fra.com

La valeur StaticExtension ne peut pas être résolue

Je rencontre des problèmes avec une liaison WPF à une propriété statique. Dans mon application, il existe une classe appelée Globals qui contient une propriété statique à ThisAddIn. Cet objet me permet d'accéder à une propriété utilisateur qui est fondamentalement ce que je veux utiliser dans ma liaison. Donc, mon XAML ressemble à ceci:

<TextBlock Text="{Binding Path=User.Name
                   , Source={x:Static Member=s:Globals.ThisAddIn}}" />

L'espace de noms s est déclaré en haut par la ligne suivante:

xmlns:s="clr-namespace:ConsoleApplication16.Model"

J'ai trouvé une tonne d'approches différentes sur la façon de se référer à la propriété statique dans XAML, mais aucune d'entre elles n'a fonctionné, sauf celle-ci, qui semble également la plus logique pour moi. Certains échantillons que j'ai trouvés n'utilisaient pas du tout Path ou Member.

Après quelques tests, j'ai trouvé la bonne façon de le faire, en utilisant "x: membre statique" pour définir la classe et la propriété statique que vous souhaitez utiliser, tandis que Path définit les propriétés correctes à l'intérieur de cet objet, tout comme une liaison normale le ferait .

Bien que cette solution se compile sans aucune plainte, une XAMLParseException apparaît directement m'indiquant que la la valeur StaticExtension ne peut pas être résolue en une énumération, un champ statique ou une propriété statique.

56
Roper

Assurer Globals.ThisAddIn est public.

Vous pouvez également l'obtenir si vous utilisez un fichier de ressources, auquel cas vous devez également vous assurer que le modificateur d'accès est défini sur Public:

enter image description here

84
Chuck Rostance

Dans le projet de bibliothèque de sortie, vous devez vous assurer que le générateur du fichier Resources.resx a été modifié en tant que PublicResXFileCodeGenerator au lieu de ResXFileGodeGenerator par défaut.

Remplacer le suivant par ...

Not public resource

Celui-ci

correct public resource

32
Dennis Zhang