如何以编程方式选择具有条件的DataGrid行?

时间:2016-11-26 15:20:14

标签: c# wpf linq datagrid

有没有办法通过引用行ID来选择DataGrid行?

我正在通过以下代码以编程方式选择DataGrid,

public static void GetFocusOfSelectedRow(DataGrid datagrid)
    {                       
        object oItem = datagrid.Items[0];
        datagrid.SelectedItem = oItem;
        datagrid.ScrollIntoView(oItem);
    }

这只是选择DataGrid中的第一行。

我希望能够使用主键指定要选择的行。即,说一行的主键ID为123456。我如何通过LINQ或其他方式获取ID为123456的行索引号?

1 个答案:

答案 0 :(得分:1)

您必须将商品集合转换为您知道其具有要过滤的属性的类型集合。

尝试

public static void GetFocusOfSelectedRow(DataGrid datagrid)
    {
        ItemCollection items = datagrid.Items;
        List<SomeType> collection = new List<SomeType>();

        foreach (var item in items)
        {
            SomeType obj = item as SomeType ;
            if(obj != null)
                collection.Add(obj);
        }

        SomeType result = collection.Where(a => a.SomeProperty == SomeValue)
            .FirstOrDefault();

        datagrid.SelectedItem = result;
        datagrid.ScrollIntoView(result);
    }