7
votes

DataTriggGriggy pour faire de la touche WPF inactive jusqu'à ce que la zone de texte ait une valeur

Je veux que la propriété la propriété du contrôle soit isenabled = "false" jusqu'à ce qu'une valeur soit entrée dans un textbox dans le dans le dans le dans le Fenêtre .

code jusqu'à présent: xxx

aussi, est-il possible d'avoir ce bouton La propriété ISEnabled de Control soit basée sur 3 Textbox Contrôles de toutes les valeurs?


1 commentaires

Oups, j'avais déjà essayé Binding = "{ViewModeldatamember}" Value = "" , mais valeur = "{x: null}" était la clé ici.


3 Réponses :


3
votes

textbox n'a pas de de la propriété . Définition de votre chemin de liaison à text.length pourrait fonctionner.

Mais une solution plus flexible serait d'utiliser un convertisseur , qui peut retourner true ou false en fonction de la valeur de la chaîne qui y est transmise. Vous pouvez ensuite se lier à la propriété de texte de la zone de texte, comme:

dans les ressources de votre contrôle: xxx

Votre définition de Datrigger ressemble alors à ceci: xxx

comme pour votre deuxième demande, vous pouvez utiliser un Multibinding . Dans ce cas, vous doit utiliser utiliser un convertisseur de valeur pour définir la manière dont les résultats de la liaison doivent être interprétés. Voir le tutoriel lié pour plus de détails.


2 commentaires

+1, merci, mais est exactement ce que je cherchais.


La partie que vous avez mentionnée sur Text.Longueur a fonctionné comme un charme pour moi.

7
votes

En supposant que vous utilisiez un modèle de présentation, tel qu'un point de vue, vous devez lier directement les données à la place des éléments de l'interface utilisateur.

<Style.Triggers>
    <MultiDataTrigger>
        <MultiDataTrigger.Conditions>
            <Condition Binding="{Binding FirstName,
                Converter={StaticResource NullToBoolConverter}}" Value="True" />
            <Condition Binding="{Binding MiddleName,
                Converter={StaticResource NullToBoolConverter}}" Value="True" />
            <Condition Binding="{Binding LastName,
                Converter={StaticResource NullToBoolConverter}}" Value="True" />
        </MultiDataTrigger.Conditions>
        <Setter Property="Button.IsEnabled" Value="True" />
    </MultiDataTrigger>
</Style.Triggers>


8 commentaires

{x: null} corrigé mon code! (Pour un membre de données) J'ai un point de vue, et dans mon code réel, je lie les données. mais = Merci!


Cependant, nécessaire pour le faire Property = "Button.isenabled"


@JOHNB Vous pouvez également spécifier qu'il s'agit d'un bouton bouton en le déclarant avec