在一个视图中将自动生成的列与自定义列组合在一起
Combining automatically generated columns with custom ones in the one view
我在绑定到我的视图时使用自动生成的列。
private ObservableCollection<Thing> _allThings;
public ListCollectionView AllThingsView { get; set; }
public Presenter()
{
...
AllThingsView = new ListCollectionView(_allThings);
...
}
我刚了解到客户希望在网格中显示比来自后台的信息更多的信息。事实上,他们希望做两件事中的一件,具体是哪件不清楚,所以我将不得不为这两件事情进行重构。
- 根据数据中已有的信息编译附加列。
- 根据不同的列表添加列(保证长度相同)。
在我的脑海中,我可以想象我需要引入一个新类型 ThingAndOtherThing 并构建它以便它可以自动生成列。但是,特别是如果只请求 #1,我觉得还有另一种方法可以简单地控制视图中的列。
调查它,我意识到自动生成的事件为每一列调用一次,这排除了从那里管理 附加 列的选项。应该在哪里做?
好吧,AutoGeneratedColumns event which is called after all columns were generated. You can add more columns manualy in its handler. It sure can be confused with AutoGeneratingColumn 事件确实 为每一列调用。
之后,一切都取决于您从何处获取数据。
我在绑定到我的视图时使用自动生成的列。
private ObservableCollection<Thing> _allThings;
public ListCollectionView AllThingsView { get; set; }
public Presenter()
{
...
AllThingsView = new ListCollectionView(_allThings);
...
}
我刚了解到客户希望在网格中显示比来自后台的信息更多的信息。事实上,他们希望做两件事中的一件,具体是哪件不清楚,所以我将不得不为这两件事情进行重构。
- 根据数据中已有的信息编译附加列。
- 根据不同的列表添加列(保证长度相同)。
在我的脑海中,我可以想象我需要引入一个新类型 ThingAndOtherThing 并构建它以便它可以自动生成列。但是,特别是如果只请求 #1,我觉得还有另一种方法可以简单地控制视图中的列。
调查它,我意识到自动生成的事件为每一列调用一次,这排除了从那里管理 附加 列的选项。应该在哪里做?
好吧,AutoGeneratedColumns event which is called after all columns were generated. You can add more columns manualy in its handler. It sure can be confused with AutoGeneratingColumn 事件确实 为每一列调用。
之后,一切都取决于您从何处获取数据。