C# 如何使用条件以编程方式选择DataGrid行?

C# 如何使用条件以编程方式选择DataGrid行?,c#,wpf,linq,datagrid,C#,Wpf,Linq,Datagrid,是否有方法通过引用行ID来选择DataGrid行 我通过下面的代码以编程方式选择DataGrid public static void GetFocusOfSelectedRow(DataGrid datagrid) { object oItem = datagrid.Items[0]; datagrid.SelectedItem = oItem; datagrid.ScrollIntoView

是否有方法通过引用行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
的行索引号?

您必须将items集合强制转换为您知道其具有要筛选的属性的类型的集合

试一试

publicstaticvoid GetFocusOfSelectedRow(DataGrid-DataGrid)
{
ItemCollection items=datagrid.items;
列表集合=新列表();
foreach(项目中的var项目)
{
SomeType obj=项目作为SomeType;
如果(obj!=null)
集合。添加(obj);
}
SomeType结果=集合。其中(a=>a.SomeProperty==SomeValue)
.FirstOrDefault();
datagrid.SelectedItem=结果;
datagrid.ScrollIntoView(结果);
}

哦,对不起,忘了格式化我的答案。你是对的,我应该投票支持你的答案,因为它帮助我得到了我所需要的,我现在就接受它。干杯,谢谢你的帮助。
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);
    }