J'ai une zone de texte à l'intérieur de usercontrol qui implémente ValidationRule et ça fonctionne bien, maintenant dans la fenêtre où j'utilise ce contrôle a un bouton, et je veux que ce bouton soit désactivé si la zone de texte à l'intérieur de usercontrol n'est pas valideComment vérifier si UserControl est valide ou non
Répondre
L'astuce consiste ici à utiliser une commande au lieu de l'événement click. Une commande contient une logique pour déterminer si la commande est valide, ainsi que le code réel à exécuter lorsque la commande est exécutée.
Nous créons une commande et lions le bouton. Le bouton sera automatiquement désactivé si Command.CanExecute() renvoie false. Il y a beaucoup d'avantages à utiliser le cadre de commande, mais je ne vais pas en parler ici.
Voici un exemple qui devrait vous aider à démarrer. Le XAML:
<StackPanel>
<Button Content="OK" Command="{Binding Path=Cmd}">
</Button>
<TextBox Name="textBox1">
<TextBox.Text>
<Binding Path="MyVal" UpdateSourceTrigger="PropertyChanged" >
<Binding.ValidationRules>
<local:MyValidationRule/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
</StackPanel>
Le UserControl code-behind (ce qui est probablement similaire à ce que vous avez déjà, mais je l'ai inclus pour montrer comment la commande est créée):
public partial class UserControl1 : UserControl
{
private MyButtonCommand _cmd;
public MyButtonCommand Cmd
{
get { return _cmd; }
}
private string _myVal;
public string MyVal
{
get { return _myVal; }
set { _myVal = value; }
}
public UserControl1()
{
InitializeComponent();
_cmd = new MyButtonCommand(this);
this.DataContext = this;
}
}
Le Classe de commande. Le but de cette classe est de décider si la commande est valide à l'aide du système de validation et de rafraîchir son état lorsque le TextBox.Text change:
public class MyButtonCommand : ICommand
{
public bool CanExecute(object parameter)
{
if (Validation.GetHasError(myUserControl.textBox1))
return false;
else
return true;
}
public event EventHandler CanExecuteChanged;
private UserControl1 myUserControl;
public MyButtonCommand(UserControl1 myUserControl)
{
this.myUserControl = myUserControl;
myUserControl.textBox1.TextChanged += new TextChangedEventHandler(textBox1_TextChanged);
}
void textBox1_TextChanged(object sender, TextChangedEventArgs e)
{
if (CanExecuteChanged != null)
CanExecuteChanged(this, EventArgs.Empty);
}
public void Execute(object parameter)
{
MessageBox.Show("hello");
}
}
- 1. comment vérifier si l'URL entrée est valide ou non?
- 2. Comment vérifier si l'entrée est valide ou non?
- 3. Comment vérifier si l'URL est valide ou non
- 4. Comment vérifier si un pointeur est valide?
- 5. Comment vérifier si userinput est valide?
- 6. Comment vérifier la MSMQ messageBody est valide ou non
- 7. comment vérifier que la chaîne json est valide ou non?
- 8. Comment vérifier si l'email est valide?
- 9. Comment vérifier si une URL est valide?
- 10. vérifier si la connexion mysql est valide
- 11. Comment vérifier si un email est valide ou non en PHP
- 12. Comment pouvons-nous vérifier si une adresse e-mail est valide ou non?
- 13. comment vérifier si la carte de crédit est valide ou non pour paypal
- 14. comment valider et vérifier si une URL saisie est valide ou non dans Drupal 6
- 15. fonction Oracle est valide ou non
- 16. Vérifier si la procédure stockée est valide
- 17. Comment puis-je vérifier si imageview est vide ou non
- 18. comment vérifier si la valeur est insérée ou non
- 19. Comment vérifier si le $ _GET est reçu ou non? (PHP)
- 20. Comment vérifier si une version Windows est authentique ou non?
- 21. Comment vérifier si l'option wifi est activée ou non
- 22. Comment vérifier si un processus est en marche ou non
- 23. Xlib: Comment vérifier si une fenêtre est réduite ou non?
- 24. sélénium Comment vérifier si l'élément est présent ou non
- 25. Comment vérifier si un lien est actif ou non?
- 26. Comment vérifier si un anniversaire est passé ou non?
- 27. Comment vérifier si une adresse IP est joignable ou non?
- 28. Comment vérifier si NFC est activé ou non dans Android?
- 29. comment vérifier si backgroundImage de UIButton est ajouté ou non
- 30. Comment vérifier une chaîne si elle est ASCII ou non?
Merci pour votre réponse, mais en fait je ne pas besoin bouton à l'intérieur usercontrol, de toute façon j'ai trouvé une solution, j'ai ajouté une propriété dans mon usercontrol 'IsValid', et je l'ai mis à Validation.Error Event, et j'ai utilisé cette propriété dans l'événement CanExecute de bouton à la fenêtre hébergée. Donc ça fonctionne bien. – Ali