通过Wrappers列表修改对象列表

时间:2017-12-11 10:28:41

标签: c# wpf list

我的目标是从类实例中检索List,然后修改该列表中的对象,但是我不知道对象将如何受到影响并需要一些有价值的知识。

我们说我们有两个案例:

  1. 创建一个新的List,从类实例中获取列表:

    ItemsList
  2. 创建一个新的包装列表,列表中的每个项目都包含具有一些其他属性的原始对象:

    wrapperList
  3. 我的问题是,如果我要修改classInstanceObservableCollections中的对象,这些更改是否会反映在DataGrids中?

    我将在多个Lists中使用多个android:enabled="false" ,我在此示例中使用了edittext.setText("Your Data");来简化情况,但我确定结果会相同。< / p>

    修改

    我意识到标题并没有很好地描述我的问题,我鼓励任何人帮助我改进它。

2 个答案:

答案 0 :(得分:1)

  

我的问题是,如果我要修改ItemsListwrapperList中的对象,这些更改是否会反映在classInstance中?

是的,除非您创建副本SomeType并将副本添加到新集合中。

以下内容为每个Wrapper对象创建一个新的SomeType个对象...

List<Wrapper> wrapperList = itemsList.Select(x => new Wrapper {Item = x } );

...但是每个Wrapper对象仍然有一个引用(尽管Item属性)到SomeType中的classInstance.ItemsList对象。< / p>

答案 1 :(得分:0)

  1. 当通过Wrapper更改SomeType(可变引用类型)实例的属性时,原始列表中的对象会发生更改,因为它们是相同的对象。
  2. 当包含Wrapper对象的列表发生更改(移动,添加或删除对象)时,原始列表不会受到影响。
  3. 当更改原始列表(移动,添加或删除对象)时,包含Wrappers的列表不受影响。
  4. 要同步集合,您应该使用ObservableCollection作为原始列表,并为源集合更改时自动更新的Wrappers实现集合(可能还有ObservableCollection派生)。