2017-10-11 1 views
0

Ich habe ein Datenraster (mit einer Datagrid-Vorlage mit Textfeldern als Zellen) in einer WPF MVVM-Anwendung, die an eine Sammlung von Objekten gebunden ist. Das Datenraster ist einfach, hat nur 2 Spalten ("Name" und "Jahr"). Das Fenster verfügt über eine Schaltfläche "Eingabe", die nach dem Klicken auf eine leere Zeile am Anfang der Sammlung und damit am Anfang des Datenrasters eingefügt wird.Legen Sie den Fokus auf die erste Zelle in DataGrid-Code hinter WPF MVVM

XAML

<Button Name="InsertButton" Command="{Binding InsertCommand}" /> 

Ansichtsmodell

public ViewModel() 
{ 
    InsertCommand = new DelegateCommand(OnInsert); 
} 

private void OnInsert(object obj) 
{ 
    MyList.Insert(0, new MyItem()); 
} 

Das funktioniert mit einem MVVM Setup, aber es mich gefragt, ob es einen Weg gibt ist die erste Zelle Textbox jedem Drücken des Knopfes der Einsatz einstellen Fokus geklickt wird, und es im XAML-Code hinter zu programmieren anstatt MVVM zu benutzen?

Dank

+0

Bitte posten Sie Ihre XAML Markup. – mm8

Antwort

0

Eine gute Lösung wäre, um mehrere Befehle mit Button-Klick zu implementieren. Hier ist ein Ansatz, wie man das macht. https://www.codeproject.com/Articles/25808/Aggregating-WPF-Commands-with-CommandGroup. Implementieren Sie danach den zweiten Befehl in Code-Behind, der den Code haben könnte, um das Focus auf das erforderliche Element mithilfe der Methode ".Focus()" von UIElement zu aktivieren. Ein anderer Ansatz wäre, ein Ereignis im ViewModel am Ende der OnInsert-Methode auszulösen, das im Code dahinter behandelt würde, um das .Focus() auf dem erforderlichen UIElement zu setzen.

Verwandte Themen