数据网格行选择/从视图模型聚焦

时间:2013-05-07 04:46:57

标签: wpf mvvm

我正在研究WPF应用程序。根据要求,我的主页面中有一个动态数据网格(用户可以选择要显示的列)。目前我正在使用MVVM设计模式。 我的数据网格中的一列是“行号”(1,2,3,... 250)。 根据新要求,我需要在此主屏幕中添加一个文本框。一旦用户在此测试框中输入行号并单击“ENTER”键,我需要选择/聚焦数据网格中的相应行。 如何从Vie Model实现这个?

  1. 如何从视图模型中选择数据网格行。?

  2. 如何将滚动位置移动到该特定数据行?

  3. 任何帮助都会很明显。

    由于

1 个答案:

答案 0 :(得分:1)

首先,集合中的每个项目都应该有一个布尔属性来指示它是否被选中(让我们称之为Selected)。然后在数据网格中:

<DataGrid>
    <DataGrid.ItemContainerStyle>
        <Style TargetType="{x:Type DataGridRow}">
             <Setter Property="IsSelected" Value="{Binding Selected, Mode=TwoWay}"/>
        </Style>
    <DataGrid.ItemContainerStyle>
 ........
 </DataGrid>

[当然所有属性都应该有更改通知]

关于滚动,我选择了this answer,问题定位为ListBox,但答案一般适用于ItemsControl,因此它适用于DataGrid

因此,当用户输入行号时,您会找到相关项目,将其Selected属性设置为true,其他所有内容都应该得到处理。