需要事先说明的是:该方案采用了反射技术,效率方面可能存在一些问题,如果数据量太大,建议分页显示。
  这里,笔者定义了两个私有变量,分别用于保存每行一样和每行不一样的数据:
    1  private Dictionary< int, IList> _ComboBoxDataContexts = new Dictionary< int, IList>();
    2  private Dictionary< int, Dictionary< int, IList>> _ComboBoxDataContextDictionaries = new Dictionary< int, Dictionary< int, IList>>();
  在客户端程序的代码中,我们就可以在任何地方为每行赋值一样或者不一样的可选项了。
    1  for ( int i = 0; i < 6; i++)
    2 {
    3     this.grdDataGrid.SetComboBoxDataContext(1, i, loader.GetTestData());
    4 }
    5 
    6  for ( int i = 6; i < 12; i++)
    7 {
    8     this.grdDataGrid.SetComboBoxDataContext(1, i, loader.GetTestData2());
    9 }
  这样处理之后,我们就可以再像处理CheckBox那样,使用this.Dispatcher.Invoke为每行赋值了。