Wie kann ich meine Viewmodel sagen, dass der Benutzer Text in dem Text ändert sich?

StackOverflow https://stackoverflow.com/questions/1013208

  •  06-07-2019
  •  | 
  •  

Frage

Also lassen Sie uns sagen, ich habe eine MVVM Anwendung und ich möchte der Benutzer einen TextBox ausfüllen und , während er es ausfüllen , ich mag zu sehen, überprüfen, ob er in den Nachnamen eingegeben hat einen Kunden noch.

Hier ist, wie ich meine Viewmodel kennen zu lernen, wenn der Benutzer hat sich verändert das Element in der ComboBox :

<ComboBox 
    ItemsSource="{Binding Customers}"
    ItemTemplate="{StaticResource CustomerComboBoxTemplate}"
    Margin="20"
    HorizontalAlignment="Left"
    SelectedItem="{Binding SelectedCustomer, Mode=TwoWay}"/>

Und hier ist, wie ich mein Viewmodel kennen zu lernen, wenn der Benutzer hat bewegte den Slider :

<Slider Minimum="0" 
        Margin="10"
        Width="400"
        IsSnapToTickEnabled="True"
        Maximum="{Binding HighestCustomerIndex, Mode=TwoWay}" 
        Value="{Binding SelectedCustomerIndex, Mode=TwoWay}"/>

Und hier ist, wie ich mein Viewmodel kennen zu lernen, wenn der Benutzer hat geändert Text in dem Text und bewegte den Fokus weg aus dem Text:

<TextBox
    Width="200"
    Text="{Binding TypedCustomerName}"/>

Aber wie bekomme ich mein Viewmodel zu wissen, wann der Benutzer hat geändert Text in dem Text als er Typen , z.B. so etwas wie folgt aus:

Pseudo-Code (verursacht Fehler, da Textchanged ist ein Ereignis):

<TextBox
    Width="200"
    TextChanged="{Binding CurrentTextInTextBox}"/>
War es hilfreich?

Lösung

Wenn Sie möchten, anstatt nur das Ansichtsmodell aktualisiert, wenn die TextBox den Fokus verloren hat, Sie können es zu aktualisieren, da sie geben. Die Update auf dem Text Bindungseigenschaft ein TextBox statt Property wie die meisten anderen Steuerelemente Losen standardmäßig eingestellt ist, jedoch können Sie es explizit in der Bindung festgelegt. Dadurch kann die TypedCustomerName Eigenschaft in der VM oder M wird so aktualisieren, wie es in der Benutzeroberfläche geändert wird.

<TextBox
Width="200"
Text="{Binding TypedCustomerName, UpdateSourceTrigger=PropertyChanged}"/>

Wenn das nicht das, was Sie suchen, können Sie auch ein href verwenden <= „http://marlongrech.wordpress.com/2008/12/13/attachedcommandbehavior-v2-aka-acb/“ rel =“ noreferrer "> AttachedCommandBehaviors die Textchanged-Routingereignis auf eine ICommand zu binden, die in Ihrer Ansicht Modell existiert.

Andere Tipps

TextBoxex Standard ist auf Lost-Focus zu aktualisieren. Set Update = „Property“ zu aktualisieren, da Benutzer die Eingabe ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top