gpt4 book ai didi

c# - 移至CollectionViewSource中的特定项目?

转载 作者:行者123 更新时间:2023-12-03 10:35:06 25 4
gpt4 key购买 nike

我是WPF的新手,正在尝试使用MVVM。我在使用 Entity Framework 的SQL数据库的 View 模型中使用CollectionViewSource。

所以说我有这个课:

public class People
{
public int Id { get; set; }
public string name { get; set; }
}

并说这是数据库中的内容:

ID:名称:
  • 八哥兔子
  • 米克·贾格尔
  • 米老鼠
  • Donald鸭
  • 高飞
  • Elmer Fudd 达菲鸭
  • pig 肉 pig

  • 现在使用CollectionViewSource.View,我知道如何使用方法MoveCurrentToNext(),MoveCurrentToPrevious()等,并且效果很好,但是我需要移至特定名称,例如Donald Duck。因此,如果我这样做:
    dbContext.Peoples.Find(4);

    或者如果我这样做
    dbContext.Peoples.Where(p => p.Name == "Donald Duck").FirstOrDefault();

    这将使我使用 Entity Framework 从数据库中获得正确的对象。但是,如果我这样做:
    CollectionViewSource.View.MoveCurrentTo(dbContext.Peoples.Find(4));

    它不会移动,并且CollectionViewSource.View.CurrentItem为null。

    那么,有人将如何转移到正确的物品上呢?

    最佳答案

    我猜这是因为调用dbContext.Peoples.Find(4)时获得的引用与您在CollectionView源集合中获得的引用不同。

    CollectionViewSource.View.MoveCurrentTo(collectionView的另一个“MoveTo”方法)需要一个与您的源集合中的引用相同的引用。

    然后,如果用于检索对象的dbContext方法返回一个新实例或一个与CollectionView中的实例不同的实例,则此方法将无效。

    因此,要么使用中间集合作为集合 View 的源,以保留对对象的唯一引用(并在数据访问上下文中的对象更改时更新这些引用),要么尝试在People类中实现相等成员(请不要尝试使用稍后的解决方案,但应该可以)。

    另外,请尝试在您的问题中添加一些完整的代码片段,而不是我们无法真正看到问题所在的代码片段。

    关于c# - 移至CollectionViewSource中的特定项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34634598/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com