【问题标题】:what is the type of TrackableCollectionOfMyObjectNamexSjLehPL coming from EF4(entity framework)- Mvvm-WPf来自 EF4(实体框架)-Mvvm-WPf 的 TrackableCollectionOfMyObjectNamexSjLehPL 的类型是什么
【发布时间】:2013-08-17 22:52:07
【问题描述】:

我有 2 个对象,比如说 Country 和 City - 它们有一对多的关系,

国家 --> id,名字

city--> id, countryid, 城市名

在视图模型中,我得到了国家列表(一切都很完美),但是,尽管我的服务参考配置,集合类型设置为系统,但 country.cities 的类型为 TrackableCollectionOfCityxSjLehPL。 collections.generic.list。

在我的用户界面中,有一个网格视图显示从视图模型绑定到国家列表的国家列表,以及另一个绑定到 selectedCountry.cities 的网格视图

它正在工作,但是当我尝试添加一个新的城市用户单击一个按钮时,它在视图模型中的命令如下:

city newcity= new City();
SelectedCountry.Cities.Add(newcity),
NotifyProperyChanged(selectedCountry)

我希望它被添加到我的网格视图中,对吧?但不是! 它没有被添加到城市网格视图中,当我通过单击列进行排序时,它会刷新并且我会看到我新添加的城市!

我认为我应该实现 CollectionChanged- 因为更改部分实际上在我所在县的列表中,但是由于它的 TrackableCollectionOfCityxSjLehPL ,我不能这样做,并且没有关于此类型的信息,有时来有时不来……

我不想像为城市制作另一个列表并将其绑定在 Wpf 部分中那样分离对象,因为最终我最终保存了整个国家,或者在后面的代码中刷新网格...... .

所以如果你看到这种类型的列表并遇到这样的问题,如果有人给我一些信息,我会很高兴

【问题讨论】:

    标签: c# wpf wcf mvvm entity-framework-4


    【解决方案1】:

    1 - 删除所有当前的服务参考。

    2 - 从您的 ViewModel 中添加对 Model 程序集(项目)的引用:

    --MySolution
     |-- MyProject.Model
     |   |-- (Model Classes)
     |
     |-- MyProject.ViewModels
     |    |--References
     |    |   |--MyProject.Model.dll <-- You need this
     |    |
     |    |--(ViewModel Classes)
     |
     |----(etcetera)
    
    • 这允许您在创建服务引用时“重用现有类型”:

    这将防止那个可怕的TrackableCollectionOfCityxSjLehPL 出现。

    3 - 重新添加服务引用并确保选择上面显示的选项。

    4 - 您可能不想在 TrackableCollection 中处理 CollectionChanged。将 ViewModel 与 Model 分开,否则您将遇到巨大的可维护性/可扩展性问题。

    【讨论】:

    • 感谢您的回复,我尝试了您的解决方案,我的解决方案在引用的组件中具有相同的重用类型设置,但我仍然删除并读取了服务引用 - 仍然该类型即将到来:/ 在服务中我有实体框架模型项目、类库和 wcf 项目,在我的客户端我将引用添加为服务引用。我不明白的是,在某些类型中一切正常,我可以使用列表而不是 Trackable Collection。
    • @user2686667 在添加服务引用时确保您的Model.dll 出现在程序集列表中。
    猜你喜欢
    • 1970-01-01
    • 2012-09-02
    • 1970-01-01
    • 2013-06-20
    • 2016-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多