La désactivation de la touche sur l'erreur de Validation
J'ai quelques zones de texte avec les validateurs personnalisés:
(Je n'ai pas l'esprit si "mauvais" de l'envoi de données vers l'objet (la propriété est une chaîne), j'ai juste besoin de prévenir les fonctionnalités d'un bouton si il y a une erreur, donc si la liaison n'est pas le bon endroit pour ce genre de validation, veuillez en informer. J'aime juste la Validation.ErrorTemplate soutien que je peux l'utiliser)
<ControlTemplate x:Key="validator" >
<DockPanel LastChildFill="True">
<TextBlock DockPanel.Dock="Right" Foreground="Red" FontSize="12pt">!</TextBlock>
<Border BorderBrush="Red" BorderThickness="1.0">
<AdornedElementPlaceholder />
</Border>
</DockPanel>
</ControlTemplate>
<TextBox Height="23" Width="150" TextWrapping="Wrap"
Validation.ErrorTemplate="{StaticResource validator}">
<TextBox.Text>
<Binding Path="StringProperty" UpdateSourceTrigger="LostFocus">
<Binding.ValidationRules>
<local:NumbersOnly/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
Comment puis-je désactiver le bouton spécifique si une de l'erreur de validation est déclenché?
<Button Content="DO Work" Height="57" HorizontalAlignment="Left" Name="button1" VerticalAlignment="Top" Width="234" Click="button1_Click" />
Double Possible ici: stackoverflow.com/questions/231052/...
les postes de là-bas de ne pas répondre à la question...
les postes de là-bas de ne pas répondre à la question...
OriginalL'auteur anderi | 2011-06-28
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
MultiDataTrigger
propriété dansStyle.Triggers
deButton
. Supposons que nous avons unTextBox
nommé "txtName". Nous avons pour désactiver le bouton "btnSave" sur l'erreur de validation deTextBox
.Ici est ce que vous pouvez faire:
Espère que cela va vous aider.
Validation.HasError
chemin. C'est comment il se réfère à la propriété attachée. Sans eux, vous obtiendrez unSystem.Windows.Data Warning: 40 : BindingExpression path error
exactement comme je les avais.que faire si j'ai deux zones de texte? Edit: NVM. Juste ajouter presque identique, l'état de la ligne de liaison.
Je crois que vous pouvez ajouter plus de <Condition> dans des <MultiDataTrigger.Conditions> section. Pour chaque contrôle d'entrée.
Eh bien, que si j'ai
ItemsControl
den
zones de texte avec une validation?OriginalL'auteur S.Mishra
CanExecute
dans MVVM est pour l'autorisation de la direction, mais les gens l'utilisent pour la validation. La meilleure façon est de le faire dans le code XAML. Vous aurez besoin d'un convertisseur si vous avez de multiples domaines à valider (InverseAndBooleansToBooleanConverter
est ma mise en œuvre pour plusieurs valeurs Booléennes). Voici comment faire:Code XAML(je suis désolé si le code XAML ne montrer parce que je pouvais le faire apparaître, même si j'ai essayé):
Le convertisseur
OriginalL'auteur Saâd Haffar
Ajouter à votre TextBlock:
Le code-behind (xaml.cs):
OriginalL'auteur Lücks
juste un coup d'oeil à ce linl
Désactiver le bouton Enregistrer dans WPF si la validation échoue
OriginalL'auteur Kishore Kumar
Si vous utilisez MVVM puis il suffit de mettre en œuvre une méthode CanExecute de l'interface
ICommand
.Le bouton ne devient pas désactivé lors de la commande CanExecute est faux
Si vous écrivez votre logique dans le code-behind alors il suffit d'utiliser une propriété d'un bouton IsEnabled:
xaml:
SomeForm.xaml.cs:
OriginalL'auteur StepUp