2017-01-04 3 views
1

Ich bin neu zu WPF (4.0) und ich versuche, ein einfaches Formular mit einigen TEXTBOX und einem SUBMIT BUTTON zu machen.WPF: Validieren Textfeld nach dem Klicken geklickt

Wenn Benutzer auf den Submit-Button klicken und das Programm prüft, ob alle Textboxen gefüllt sind, wenn nicht, wird die ungefüllte Textbox von einem "Red Border" umgeben.

<StackPanel> 
    <Border Padding> 
     <StackPanel Orientation="Horizontal"> 
      <TextBox Name="name_textbox"/> 
     </StackPanel> 
    </Border> 


    <Border> 
     <StackPanel> 
      <Button HorizontalAlignment="Center" Margin="0">Submit</Button> 
     </StackPanel> 
    </Border>   
</StackPanel> 

ich gelesen und ich versuche, die folgende sowie einige andere Dokumente und Stack-Überlauf-Beiträge zu verstehen, und ich fand, es gibt viele Dinge und Begriffe, die ich nicht verstehen konnte.

https://www.codeproject.com/Articles/15239/Validation-in-Windows-Presentation-Foundation#welcome

https://www.codeproject.com/Articles/140620/WPF-Tutorial-Dependency-Property

Meine Frage ist: Ich denke, es ist etwas mit Daten zu tun Validierung Bindung und abgesehen davon, was soll ich sonst noch wissen?

oder gibt es gute Ressourcen empfehlen oder schnelle Beispiele?

Ich bin verloren und hoffe jemand könnte helfen, danke!

+0

Wenn Sie 'ICommand' verwenden, können Sie Ihre Schaltfläche mit der Methode" canexecute "validieren. Ich empfehle, mvvm zu lesen, das Ihnen mehr Einblick gibt. – Eldho

Antwort

0

Dies ist Teil einer Klasse, die ich schreibe, um die Validierung zu überprüfen, nachdem ein Element den Fokus verloren hat.

FocusAdvancement in Ihrem Fenster hinzufügen und ValidationOnLostFocus auf true setzen. und fügen Sie Ihre benutzerdefinierte Validierung in Textbox ValidationRules hinzu.

public static class FocusAdvancement 
{ 
    public static readonly DependencyProperty ValidationOnLostFocusProperty= 
     DependencyProperty.RegisterAttached ("ValidationOnLostFocus",typeof (bool),typeof (FocusAdvancement),new UIPropertyMetadata (OnValidationOnLostFocusPropertyChanged)); 

    public static bool GetValidationOnLostFocusProperty(DependencyObject d) 
    { 
     return (bool)d.GetValue (ValidationOnLostFocusProperty); 
    } 

    public static void SetValidationOnLostFocusProperty(DependencyObject d,bool value) 
    { 
     d.SetValue (ValidationOnLostFocusProperty,value); 
    } 

    private static void OnValidationOnLostFocusPropertyChanged(DependencyObject d,DependencyPropertyChangedEventArgs e) 
    { 
     var element=(UIElement)d; 
     if (element==null) 
      return; 
     if ((bool)e.NewValue) 
     { 
      element.LostFocus+=LostFocus; 
     } 
     else 
      element.GotFocus-=LostFocus; 
    } 

    private static void LostFocus(object sender,RoutedEventArgs e) 
    { 
     var element=(UIElement)sender; 

     if (element!=null) 
     { 
      TextBox oTextBox=(TextBox)element; 
      oTextBox.GetBindingExpression (TextBox.TextProperty).UpdateSource(); 
     } 
    } 
Verwandte Themen