La désactivation de tous, mais un enfant de contrôle dans une fenêtre WPF
J'ai un tas de contrôles sur ma fenêtre. L'un d'eux est un bouton d'actualisation qui effectue une tâche fastidieuse sur un thread d'arrière-plan.
Lorsque l'utilisateur clique sur le bouton actualiser, j'ai mis le curseur dans une attente (sablier) statut et de désactiver l'ensemble de la fenêtre -- Me.IsEnabled = False
.
J'aimerais en charge l'annulation de l'actualisation de l'action en permettant à l'utilisateur de cliquer sur un bouton annuler, mais je ne peux pas faciliter ce alors que l'ensemble de la fenêtre est désactivée.
Est-il un moyen de faire cela en plus de la désactivation de chaque contrôle (sauf pour le bouton annuler) un par un et ensuite de les réactiver un par un lorsque l'utilisateur clique sur annuler?
OriginalL'auteur Rob Sobers | 2008-11-07
Vous devez vous connecter pour publier un commentaire.
Vous pouvez mettre tous les contrôles dans un panneau (Grid, StackPanel, etc.), et de laisser le bouton annuler dans un autre panneau. Ensuite, définissez la propriété IsEnabled de l'autre panneau.
Dans la pratique, ce sera sans doute d'introduire plus d'un groupe supplémentaire.
Par exemple, si vous avez eu un StackPanel de boutons, vous pouvez ajouter un StackPanel:
Ensuite, vous devez procéder comme suit pour désactiver tout, mais le bouton annuler:
Eh bien, j'ai fait 0 travail avec WP8, mais j'ai trouvé les docs pour le WP8
StackPanel
: msdn.microsoft.com/en-US/library/windows/apps/... je suppose que vous êtes à l'aide de l'api, et de ne pas Silverlight, depuis Silverlight a unIsEnabled
de la propriété. Bien que vous ne serez pas obtenir le regard exact de contrôles désactivés, vous pouvez toujours régler leIsHitTestVisible="false"
désactiver l'entrée surcontrolContainer
. Sinon, vous pourriez avoir une semi-transparente superposition de vous rendre visible lorsque vous souhaitez désactiver les autres contrôles (et utiliser unGrid
que le panneau extérieur).OriginalL'auteur Abe Heidebrecht
Je tenais également à l'utilisateur d'être en mesure d'annuler le chargement.
J'ai trouvé une belle solution.
Cela permet également à la fenêtre principale pour être sélectionné et déplacé à la différence de
this.Enabled = false;
qui bloque totalement la fenêtre.
OriginalL'auteur DJR
Vous pouvez lier des données de chaque contrôle de la propriété IsEnabled personnalisé boolean propriété de dépendance que les signaux lorsque votre application est en cours de verrouillage vers le bas. Il suffit de ne pas lier le bouton annuler.
Comme Donnelle mentionné, Vous pouvez configurer multi liaison avec un convertisseur. Voici quelques exemples que vous pouvez consulter.
WPF MultiBinding avec Convertisseur
La Mise En Œuvre Paramétrée MultiBinding Échantillon
Vous pouvez utiliser un multi-liaison avec un convertisseur-- il y a des exemples partout pour savoir comment faire un générique avec un paramètre pour ET ou de OU de comportements.
OriginalL'auteur Aaron Fischer