10
votes

Comment se lier à la propriété qui réside dans l'application XAML Backend

J'ai une propriété code> dans mon app.xaml.cs appelé utilisateur code> qui contient les détails de l'utilisateur. J'ai lu ici que vous ne pouvez pas avoir une propriété de dépendance sur l'application classe.

J'ai choisi d'utiliser app.cs car il est global à l'ensemble du programme et il est utilisé pour le contrôle d'accès, mais toutes les alternatives sont les bienvenues. P>

MAINTENANT ma question est de savoir comment puis-je lier Cette propriété de My UserControls et Windows. P>

IsEnabled="{Binding Path=User, Converter={StaticResource hasAccessConverter}, ConverterParameter=Mid}"


0 commentaires

3 Réponses :


30
votes

J'ai lu ici que vous ne pouvez pas avoir une propriété de dépendance sur la classe d'applications.

En effet, vous ne pouvez pas, car application n'hérite pas de dépendencycybject . Cependant, il n'est pas nécessaire: seul la propriété cible d'une contrainte doit être une propriété de dépendance.

Si vous souhaitez lier à une propriété de votre classe d'applications, vous pouvez faire C'est comme ça: xxx


4 commentaires

Juste une note que cela dans un Silverlight sans canal. x: statique et x: type n'existe pas dans le monde Silverlight.


N'oubliez pas d'implémenter inotifypertychanged pour voir les modifications apportées à cette propriété réfléchie sur l'interface utilisateur.


Dans ce qui précède, vous liez un bool à un utilisateur , qui n'a aucun sens. Je suppose que vous voulez le lier à utilisateur.isenabled - comment cela pourrait-il faire ça?


@DMITRINESTERUK, je suis d'accord, je suis d'accord, il ne semble pas avoir de sens ... Je viens de prendre le code de l'Op et je l'ai changé un peu, mais j'ai oublié le convertisseur en cours de route. En supposant qu'il existe une propriété utilisateur.EnEnabled, vous pouvez simplement utiliser chemin = utilisateur.isenabled ; Sinon, vous pouvez utiliser un convertisseur comme dans le code de l'OP.



6
votes

et pour y accéder de manière programmative en C #, vous pouvez le faire:

((App)Application.Current).YourMethod
((App)Application.Current).YourProperty


0 commentaires

-1
votes

Vous pouvez lier de manière prétendante dans Silverlight à l'application.Current à l'aide d'un convertisseur personnalisé.

voir mon blog post ici


1 commentaires

Link Lone est considéré comme une réponse médiocre car elle n'a pas de sens en soi et que la ressource cible n'est pas garantie d'être vivante à l'avenir. Il serait préférable d'inclure les parties essentielles de la réponse ici et de fournir le lien pour référence.