[Silverlight学习笔记]如何获取ItemsControl的DataTemplate中定义的控件?

开发环境:VisualStudio2010 +Silverlight4

新建一个test.xaml,并添加ComboBox组合框控件,其Xaml代码如下:

 

那么我们如何获取DataTemplate中的名为txtID的TextBox控件或者其它控件呢?

      在test.xaml.cs文件中不能够直接引用名为txtID的TextBox控件,即this.txtID是不能访问的,因为txtID只属于DataTemplate模板的名称空间范围内(类似于参数的作用域),可参看Silverlight4文档的TemplatePartAtrribute。我们如何获得DataTemplate的TextBox控件呢?可用如下方式获得:

方法一:

 

方法二:

 

对于

TextBox txtBox = (TextBox)VisualTreeHelper.GetChild(this.cmbTemplate.LoadContent(), 0);

因为它的Text的值是绑定数据源的ID属性(如:{Binding Path=ID}),通过程序运行动态生成的值,因此通过这两种方式获得的TextBox的Text是空值,而对于tbCategoryName名的TextBlock,因为它的Text值是固定的“Name”字符串,因此通过这两种方法获得的TextBlock的Text值为“Name”。

如果我们想获得选中的ComboBoxItem的TextBox的值或者Image的Source值,则可通过如下方式获得:

 

可能有更好的方法获得绑定数据源时动态生成的值,本人不才,还未想出该方法,可讲究用上面的方法获得,如果找到了相应方法就做更新。

posted @ 2010-11-12 01:26  呼噜Zz  阅读(1891)  评论(0编辑  收藏  举报