2009-09-10 7 views
2

Supposons que dans App.cs - j'ajoute un champ à la classe représentant l'application. Puis-je accéder à ce champ à partir des pages de l'application? Si oui, comment puis-je faire cela? Ai-je raison de supposer qu'une fois initialisé, ce champ de membre serait "vivant" pour la durée de l'exécution de l'application?Accès aux membres de l'application?

Répondre

3

Vous pouvez. En gros, vous obtenez simplement l'application actuelle et la transtypez dans App (ou quel que soit le nom de la classe dans votre App.Xaml). Voici un extrait qui démontre cela.

var myApp = Application.Current as App; 
var n = myApp.NameOfPropertyAdded; 

Je ne suis pas sûr de ce que vous entendez par vivant. Je vais supposer que vous voulez lier des choses et que vos liaisons se mettent à jour quand elles sont mises à jour. Pour ce faire, vous devez configurer la notification de modification de propriété.

L'approche d'ajouter des propriétés au fichier App.xaml.cs me semble un peu drôle. Je pense que l'approche recommandée serait d'ajouter quelque chose à l'application en tant que ressource au niveau de l'application afin que vous puissiez facilement les référencer en XAML.

1

Si vous accédez fréquemment à ces champs, il peut être utile d'ajouter une propriété pour l'application en cours dans votre ViewModel ou votre Xaml.cs pour y accéder plus tard.

public Application CurrentApp 
{ 
    get 
    { 
     return Application.Current as App; 
    } 
} 

Puis dans votre page, vous pouvez simplement la référence de votre propriété

CurrentApp.MyField; 

Et oui, un champ ou une propriété dans votre App.xamls.cs seront de l'ordre pour la durée de vie de l'application.

+0

nice one, jamais pensé à cela. Merci! – Maciek

0

Si vous faites sur le terrain, propriété, méthode statique, vous pouvez y accéder à l'aide

App.myField; 
App.MyProperty; 
App.MyMethod(); 
Questions connexes