2010-06-04 4 views
2

J'ai besoin de code qui forcera Silverlight à valider l'élément ciblé (dans mon cas, un TextBox, mais cela pourrait être n'importe quoi). Dans WPF j'utiliseValider l'élément ciblé dans Silverlight

public static void CommitFocusedElement() { 
    UIElement element = Keyboard.FocusedElement as UIElement; 
    if (element != null) { 
     TraversalRequest request = new TraversalRequest(FocusNavigationDirection.Next); 
     FocusNavigationDirection directionBack = FocusNavigationDirection.Previous; 
     if (!element.MoveFocus(request)) {      
      request = new TraversalRequest(FocusNavigationDirection.Previous); 
      directionBack = FocusNavigationDirection.Next; 
      element.MoveFocus(request); 
     } 
     if (element.Focusable) 
     { 
      element.Focus(); 
     } 
     else 
     { 
      element.MoveFocus(new TraversalRequest(directionBack)); 
     } 
    } 
} 

Mais plusieurs parties de ce code ne sont pas compatibles avec Silverlight. Quelqu'un peut-il me diriger vers une alternative Silverlight?

Répondre

1

Je suppose que vous voulez mettre à jour la source d'une liaison. Si vous n'êtes pas, vous devriez probablement.

BindingExpression expression = textBox1.GetBindingExpression(TextBox.TextProperty); 
expression.UpdateSource(); 
+0

Merci. Si je ne connais pas l'élément exact que je veux mettre à jour, existe-t-il un moyen d'énumérer tous les éléments du contrôle/de la fenêtre active? – Jeff

+0

@ jeffn825: Vous pouvez itérer sur les enfants d'un élément en utilisant VisualTreeHelper: http://msdn.microsoft.com/en-us/library/ms635657(v=VS.95).aspx, mais je doute que ce soit nécessaire. Toutes les sources doivent être mises à jour automatiquement une fois que l'utilisateur clique ou affiche des onglets n'importe où. –

+0

Cela ne semble pas se produire. Plus précisément, j'ai un utilisateur qui tape dans une zone de texte, puis ils frappent entrer. Cela devrait par programme lancer un nouveau formulaire en utilisant l'info de la zone de texte ... mais la zone de texte ne semble pas avoir validé la valeur. Il y a beaucoup de textboxes, donc je ne sais pas au moment de l'exécution dans quel textbox l'utilisateur tapait quand il frappait ... – Jeff

Questions connexes