关于WPF里的ComboBox怎样设置它的页面加载完成后触发的事件事件?有哪位大神能帮我看看下面的代码有什么错误?????

 在使用DataGrid的时候有时候需要使某些列为ComboBox,这时自然想到使用DataGridComboBoxColumn但是如果使用的是ItemsSource数据绑定后台的对象,就会发现这根本就不能用。

  首先看有问题的代码:

  茬这里通过把Window控件的Name设置为this,然后在绑定的时候指定ElementName=this及Path属性来关联到后台数据源。为了测试是否有效我还定义了一个TextBox来显示SelectedList中的数据的值。首先可以肯定的是,用DataGridTextColumn一点问题也没有数据可以正常地显示和更新,但是使用DataGridComboBoxColumn时问题就出现了数据不能显示,就像什么都没有绑萣上去一样:

  我在网上找了下资料都与相似,DataGridComboBoxColumn对数据源有下面的要求:

  • 1、静态资源有关更多信息,请参见 

  • 2、x: 静态代码实体。有關更多信息请参见 。

  • 3、 类型的内联集合

  运行发现,显示是正常了但是不论我怎么改,SelectedList中的数据都不带改变我尝试设置了ComboBox的各項属性,也没有成功但是非常奇怪的地方是,如果在选择后去点了上面的DataGridComboBoxColumn ,数据就能正常正同步过去:

  我想这可能是DataGridComboBoxColumn在选择后会頁面加载完成后触发的事件一个事件完成同步工作。

  好了这样还是不行,我去了stackoverflow上找问题终于得到了解决。基本上原因是这样嘚:DataGrid的列并没有数据上下文所以DataGridTemplateColumn中的ComoBox从未添加到“Visual Tree(可视化树)”中。只要Grid绘制了单元并且得到了数据上下文后,就能正常地使用ItemsSource属性来完成绑定了修正后的代码:

  这样,数据能够正常地同步了但是如果不点中对应单元格,ComboBox就不会显示出来只有点中了才显示,继续参考资料问题原因是上面只设置了EditingElementStyle(编辑时样式),所以在选中编辑时就会出现ComboBox要想一直显示,还得设置ElementStyle使它和EditingElementStyle一样就行了:

  问题圆满解决,其实也不难只是不知道,没想到而已大家可以看看。

  转载请注明原址: 

学习WPF中碰到点问题,请教各位

ComboBox控件想绑定事件值更改时页面加载完成后触发的事件


我要回帖

更多关于 触发事件 的文章

 

随机推荐