将焦点设置为DataGrid代码中的第一个单元格WPF MVVM

问题描述:

在绑定到对象集合的WPF MVVM应用程序中,我有一个数据网格(使用带有文本框的datagrid模板作为单元格)。数据网格很简单,只有2列(“名称”和“年份”)。该窗口有一个输入按钮,一旦点击,在集合的开始插入一个空白行,从而开始数据网格。将焦点设置为DataGrid代码中的第一个单元格WPF MVVM

XAML

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

视图模型

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

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

这工作与MVVM设置,但不知道是否有设置每个插入按钮被点击一次集中第一个单元格的文本框的方式,并在后面的XAML代码中进行编程,而不是使用MVVM?

感谢

+0

请张贴您的XAML标记。 – mm8

一个很好的解决办法是实现与按钮单击多个命令。 这是一个如何做到这一点的方法。 https://www.codeproject.com/Articles/25808/Aggregating-WPF-Commands-with-CommandGroup。 这样做之后,在代码隐藏中实现第二个命令,该代码可以使用UIElement的“.Focus()”方法在所需元素上启用Focus。

另一种方法是在OnInsert方法结束时在ViewModel中引发一个事件,该事件将在后面的代码中处理,以在所需的UIElement上设置.Focus()。