WPF怎么获取模板控件啊,试很多次了
最近用wpf做东西,在datagrid模板里面嵌入combobox combobox绑定数据库然后进行过滤,但是我想要获取cmobobox控件,始终都娶不到,网上很多办法都不能用啊,经常提示未设置对象或者下标不对,不知道什么问题,麻烦帮忙看看。谢谢。。模板代码
<DataGridTemplateColumn Header="设备类型">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=name}" x:Name="tb" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate x:Name="cmbTemplate">
<ComboBox x:Name="taskCombo" ItemsSource="{Binding Source={StaticResource nameEnum}}" SelectedItem ="{Binding Path=name}" IsSynchronizedWithCurrentItem="False" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
请问怎么获取名为 taskCombo控件,网上不准啊
------解决方案--------------------
在你的ComboBox中添加 Loaded 事件:
<ComboBox x:Name="taskCombo" Loaded="taskCombo_Loaded"/>
后台代码:
private void taskCombo_Loaded(object sender, RoutedEventArgs e)
{
//sender就是你的ComboBox
ComboBox MyComboBox = (ComboBox)sender;
}
[解决办法]
public List<T> GetChildObjects<T>(DependencyObject obj, string name) where T : FrameworkElement
{
DependencyObject child = null;
List<T> childList = new List<T>();
for (int i = 0; i <= VisualTreeHelper.GetChildrenCount(obj) - 1; i++)
{
child = VisualTreeHelper.GetChild(obj, i);
if (child is T && (((T)child).Name == name
[解决办法]
string.IsNullOrEmpty(name)))
{
childList.Add((T)child);
}
childList.AddRange(GetChildObjects<T>(child, ""));
}
return childList;
}
这是方法
List<Combobox > collection = GetChildObjects<CheckBox>(datagrid1, "Combobox ");
这里得到了所有的 datagrid里面的 combox ,遍历一下找到你需要的combox