C# 将视图更新到WPF中的数据集

C# 将视图更新到WPF中的数据集,c#,wpf,C#,Wpf,我有一个WPF表单上的数据源,它是我的表的详细视图。搜索特定行时,我希望它在绑定的文本框中更新,但它们只显示为空 System.Windows.Data.CollectionViewSource employeesViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("employeesViewSource"))); Yello.YelloDataSet yelloDa

我有一个WPF表单上的数据源,它是我的表的详细视图。搜索特定行时,我希望它在绑定的文本框中更新,但它们只显示为空

        System.Windows.Data.CollectionViewSource employeesViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("employeesViewSource")));
        Yello.YelloDataSet yelloDataSet = ((Yello.YelloDataSet)(this.FindResource("yelloDataSet")));
        var adapter = new YelloDataSetTableAdapters.EmployeesTableAdapter();

        var row = yelloDataSet.Employees.Select("ID='11'");
        employeesViewSource.View.MoveCurrentTo(row);
例如,如果我这样做:

        System.Windows.Data.CollectionViewSource employeesViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("employeesViewSource")));
        employeesViewSource.View.MoveCurrentToNext();

它可以完美地工作,并使用绑定进行更新。我是使用了错误的函数还是遗漏了什么???

我想发生的是,您正在从
yelloDataSet
中选择一行,然后在
employeesViewSource
中尝试移动到该行,但问题是行不相同,尽管数据可能是相同的。要移动到
集合ViewSource
中的行,必须在集合中搜索该行。所以你可以这样做:

var row=employeesViewSource.View.OfType().Select(“ID='11');
employeesViewSource.View.MoveCurrentTo(行);

编辑

好的,我没有真正尝试代码就回答了,我错了。尝试下一个代码,我认为它应该适合您:

var row = employeesViewSource.View.OfType<DataRowView>()
          .Where(x => x.Row.Field<string>("ID") == "11")
          .FirstOrDefault();
employeesViewSource.View.MoveCurrentTo(row);
var row=employeesViewSource.View.OfType()
其中(x=>x.Row.Field(“ID”)==“11”)
.FirstOrDefault();
employeesViewSource.View.MoveCurrentTo(行);

但这取决于CollectionViewSource的类型。我用数据表试过了。例如,如果它是一个数据集,它可能会更改。如果这不起作用,请告诉我源的类型…

谢谢您的回答,但是employeesViewSource没有选择方法,不是我能找到的。好的,我犯了一个错误。在使用
Select
之前,您必须强制转换您的
CollectionViewSource
。请参阅我的更新代码@MagnusWirström此错误提示:CS0411无法从用法推断方法“Enumerable.Select(IEnumerable,Func)”的类型参数。请尝试显式指定类型参数。@MagnusWirström查看我编辑的答案。我希望它对你有用。只需稍加修改就行了。答案是:var row=employeesViewSource.View.OfType(),其中(x=>x.row.Field(“ID”)==11.FirstOrDefault();
var row = employeesViewSource.View.OfType<DataRowView>()
          .Where(x => x.Row.Field<string>("ID") == "11")
          .FirstOrDefault();
employeesViewSource.View.MoveCurrentTo(row);