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

时间:2017-10-11 17:32:08

标签: wpf mvvm wpfdatagrid

我在WPF MVVM应用程序中有一个数据网格(使用带有文本框作为单元格的数据网格模板),该应用程序绑定到一组对象。数据网格很简单,只有2列("名称"和"年")。该窗口有一个Input按钮,一旦点击,就会在集合的开头插入一个空行,从而在数据网格的开头插入。

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 ?

由于

1 个答案:

答案 0 :(得分:0)

一个好的解决方案是使用Button Click实现多个命令。 这是一个如何做到这一点的方法。 https://www.codeproject.com/Articles/25808/Aggregating-WPF-Commands-with-CommandGroup。 在执行此操作之后,在代码隐藏中实现第二个命令,该命令可能具有使用&#34; .Focus()&#34;来启用Focus所需元素的代码。 UIElement的方法。

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