2017-05-12 1 views
0

Ceci est mon simple (débutant) compréhension:
Nous avons un choix pour le Code générateur Ressource: interne ou publique. La valeur par défaut est interne. Je comprends que les ressources sont créées avec un accesseur interne ou public en fonction de ce choix. Par conséquent, si l'accesseur est public, je peux utiliser quelque chose comme: Text="{x:Static resx:Resources.SomeLabelID}" ... dans mon XAML.
Ma question est soit/les deux:
Fichier de ressources C# - comment accéder aux ressources internes à partir de XAML?

  • Quelle est l'utilité d'un produit interne accesseur lorsque le XAML ci-dessus ne fonctionne pas (plus précisément il fonctionne "en mode de conception, mais pas au moment de l'exécution créant ainsi confusion pour un débutant)? Note: Il y a beaucoup réponses dans SO qui disent simplement de changer le accesseur « public » sans expliquer pourquoi, que je pense serait par bien de comprendre, d'autant plus que la valeur par défaut semble être interne.

-OU-

  • Y at-il une autre façon d'accéder à des chaînes de ressources (de XAML) lorsque le code est généré avec l'accesseur interne ?

Merci

+0

Les fichiers de ressources ne sont pas spécifiques à wpf - vous pouvez les utiliser dans n'importe quel type d'application. Ils étaient disponibles lorsque WPF n'existait pas encore. Ils sont internes par défaut pour la même raison que les classes sont internes par défaut ou les méthodes et les champs sont privés par défaut. – Evk

Répondre

1

Tout défini dans XAML n'utilisez actuellement internal modificateur d'accès. C'est par la conception du cadre WPF, tout simplement si vous ne serez pas en mesure d'accéder aux contrôles définis localement dans l'assemblage différent.

Généralement, si vous utilisez strings pour les commandes "statiques" (c'est-à-dire Label), vous pouvez simplement utiliser une tête avec un modificateur d'accès changeant.

+0

"* Généralement * si vous allez utiliser des chaînes pour des commandes" statiques "(c'est-à-dire des étiquettes), vous pouvez simplement aller de l'avant et changer le modificateur d'accès [de * private * à * public *]." ... c'est exactement la réponse que je cherchais. –