WPF Commandes et les Paramètres
Je suis la recherche de la WPF paramètres de commande à une limitation. C'est peut-être un signe que je suis en les utilisant pour le mauvais but, mais je suis encore à donner un essai avant de me ferraille et de prendre une approche différente.
J'ai mis en place un système de l'exécution de commandes en mode asynchrone, mais il est difficile d'utiliser quoi que ce soit qui nécessite la saisie de données. Je sais qu'un modèle commun avec des commandes WPF est de passer en this
. Mais this
ne fonctionnera pas à toutes les commandes asynchrones, car toutes les propriétés de dépendance sont alors inaccessibles.
Je me retrouve avec un code comme ceci:
<Button Command="{Binding ElementName=servicePage, Path=InstallServiceCommand}">
<Button.CommandParameter>
<MultiBinding Converter="{StaticResource InstallServiceParameterConverter}">
<MultiBinding.Bindings>
<Binding ElementName="servicePage" Path="IsInstalled"/>
<Binding ElementName="localURI" Path="Text"/>
<Binding ElementName="meshURI" Path="Text"/>
<Binding ElementName="registerWithMesh" Path="IsChecked"/>
</MultiBinding.Bindings>
</MultiBinding>
</Button.CommandParameter>
</Button>
et aussi besoin de la InstallServiceParametersConverter classe (plus InstallServiceParameters).
Quelqu'un voit d'une manière évidente à améliorer sur ce point?
this
. Pouvez-vous préciser pourquoi vous pensez que c'est mal?OriginalL'auteur |
Vous devez vous connecter pour publier un commentaire.
Permettez-moi de vous montrer mon projet open source Caliburn. Vous pouvez le trouver à ici. La fonctionnalité qui aurait le plus de vous aider à résoudre votre problème est documenté brièvement ici
OriginalL'auteur EisenbergEffect
Commandes pour éviter le couplage entre votre INTERFACE utilisateur et la logique de programme. Ici, vous êtes en essayant de se déplacer de sorte que vous trouverez qu'il est douloureux. Vous voulez avoir votre INTERFACE utilisateur lié à un autre objet (qui contient ces données) et votre commande peut alors tout simplement faire un appel à un objet.
Essayez de rechercher MV-V-M, ou de regarder le PRISME exemple.
OriginalL'auteur
Essayez d'utiliser quelque chose comme MVVM:
Créer une classe qui stocke toutes les données affichées dans la "vue" (fenêtre, page, tout ce qui fait sens pour votre application).
Lier votre contrôle d'une instance de cette classe.
Ont la classe exposer quelques ICommand propriétés, lier le bouton de Commande de la propriété à la propriété appropriée dans la classe de données, vous n'avez pas besoin de définir le paramètre de commande parce que toutes les données ont déjà été transférée à l'objet de l'utilisation normale de tous les jours la liaison de données.
Ont un ICommand classe dérivée qui appelle de nouveau en vous un objet, regardez ce lien pour plusieurs implémentations:
http://dotnet.org.za/rudi/archive/2009/03/05/the-power-of-icommand.aspx
À l'intérieur de la méthode appelée par la commande, pack toutes les données nécessaires et les envoyer vers un thread d'arrière-plan.
OriginalL'auteur
Vous avez besoin de quelque chose qui va vous permettre de demander l'objet approprié. Peut-être vous avez besoin d'un objet pour stocker ces paramètres que votre objet parent peut présenter sous la forme d'une propriété.
Vraiment ce que vous devez faire est de laisser les commandes synchrones et de les exécuter de manière asynchrone en jetant un nouveau thread ou de les transmettre à un gestionnaire de commandes (maison roulé).
OriginalL'auteur Orion Adrian