这是我使用的WPF-Datagrid:
<DataGrid Grid.Row="1" x:Name="products" CanUserAddRows="true" MouseDoubleClick="products_MouseDoubleClick" InitializingNewItem="products_InitializingNewItem" IsReadOnly="True"/>
product - dataset有一个名为"昵称"的属性。并且是按照这个性质排序的。当用户按下一个字母(例如" ")我希望我的数据网格选择下一行的昵称以" "
简而言之:我希望我的dataGrid显示的标准行为像大多数数据网格在Windows(例如资源管理器)。
这个代码:
private void products_KeyUp(object sender, KeyEventArgs e)
{
foreach (ProductDatasource item in products.Items)
{
if (item.Nickname.StartsWith(e.Key.ToString()))
{
Debug.Print("Found it, but how to set the selection?");
}
}
}
将查找以该字母开头的第一个Item。但是我怎么选择这个项目呢?
并且几乎每个窗口中的网格都显示相同的行为(即使在更复杂的方式中,例如从当前位置开始搜索;如果你连续按两个键,比如"mi"它搜索下一个以";mi"开头的项。我想知道数据网格是否有内置的行为,我可以用它来做到这一点?
设置DataGrid
的SelectedItem
属性:
private void products_KeyUp(object sender, KeyEventArgs e)
{
foreach (ProductDatasource item in products.Items)
{
if (item.Nickname.StartsWith(e.Key.ToString()))
{
products.SelectedItem = item;
}
}
}