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



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

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?

谢谢

一个好的解决方案是使用按钮单击实现多个命令。这是有关如何执行此操作的方法。https://www.codeproject.com/Articles/25808/Aggregating-WPF-Commands-with-CommandGroup。完成此操作后,在代码隐藏中实现第二个命令,该命令可以具有使用".Focus()" 方法。

另一种方法是在 OnInsert 方法结束时在 ViewModel 中引发一个事件,该事件将在隐藏的代码中处理以设置 .Focus() on the required UIElement.

最新更新