Accès le code-behind de la variable dans le code XAML
Comment puis-je accéder à la variable publique qui, dans de l'Échantillon.xaml.cs fichier comme asp.net <%=VariableName%>
?
- Cette question peut également être utile depuis elle est un peu plus récent ...
Vous devez vous connecter pour publier un commentaire.
Il ya quelques façons de le faire.
Ajouter votre variable comme une ressource à partir du code-behind:
Puis vous pouvez y accéder à partir de XAML:
Si vous devez l'ajouter après le XAML est analysée, vous pouvez utiliser un
DynamicResource
dessus au lieu deStaticResource
.Faire de la variable une propriété de quelque chose dans votre XAML. Habituellement, cela fonctionne par le biais de
DataContext
:ou
Après cela, quelque chose dans votre XAML peut y accéder par un
Binding
:ou
Pour la liaison, si
DataContext
n'est pas en cours d'utilisation, vous pouvez simplement ajouter ceci dans le constructeur du code de derrière:À l'aide de cette, chaque propriété dans le code devient accessible à de liaison:
Une autre façon est de simplement donner un nom à l'élément racine du XAML:
Depuis le XAML est compilé comme une classe partielle du code-behind, nous pouvons avoir accès à la propriété par nom:
Remarque: l'accès est uniquement disponible pour les propriétés; pas de champs.
set;
etget;
ou{Binding Mode = OneWay}
sont nécessaires. Si OneWay de liaison est utilisé, les données sous-jacentes devraient mettre en œuvre INotifyPropertyChanged.Pour quick-and-dirty Windows WPF, je préfère de liaison le DataContext de la Fenêtre pour la fenêtre elle-même; cela peut être fait dans le code XAML.
Window1.xaml
Window1.xaml.cs
Dans l'exemple ci-dessus, note la liaison utilisé dans le
DataContext
bien sur la Fenêtre, ce qui dit "Mis à votre contexte de données vous-même". Les deux blocs de texte sont liés àMyProperty1
etMyProperty2
, le gestionnaire d'événement pour le bouton définir ces valeurs, qui seront automatiquement propagées à laText
la propriété des deux TextBlocks que les propriétés sont des Propriétés de Dépendance.Il est également intéressant de noter qu'un "Liant" ne peut être réglé que sur une DependencyProperty de DependencyObject. Si vous souhaitez définir un non DependencyProperty (eg. une propriété classique) sur un objet dans le code XAML, alors vous devrez utiliser Robert de la première méthode de l'utilisation des ressources dans le code derrière.