我正在研究WPF应用程序。根据要求,我的主页面中有一个动态数据网格(用户可以选择要显示的列)。目前我正在使用MVVM设计模式。 我的数据网格中的一列是“行号”(1,2,3,... 250)。 根据新要求,我需要在此主屏幕中添加一个文本框。一旦用户在此测试框中输入行号并单击“ENTER”键,我需要选择/聚焦数据网格中的相应行。 如何从Vie Model实现这个?
如何从视图模型中选择数据网格行。?
如何将滚动位置移动到该特定数据行?
任何帮助都会很明显。
由于
答案 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
,其他所有内容都应该得到处理。