| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- using System;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Media;
- namespace SAGA.RevitUtils
- {
- public class CommonForm
- {
- /// <summary>
- /// 获取父可视对象中第一个指定类型的子可视对象(用于获取DataGrid单元格)
- /// </summary>
- /// <typeparam name="T">可视对象类型</typeparam>
- /// <param name="parent">父可视对象</param>
- /// <returns>第一个指定类型的子可视对象</returns>
- public static T GetVisualChild<T>(Visual parent) where T : Visual
- {
- T child = default(T);
- int numVisuals = VisualTreeHelper.GetChildrenCount(parent);
- for (int i = 0; i < numVisuals; i++)
- {
- Visual v = (Visual)VisualTreeHelper.GetChild(parent, i);
- child = v as T;
- if (child == null)
- {
- child = GetVisualChild<T>(v);
- }
- if (child != null)
- {
- break;
- }
- }
- return child;
- }
- /// <summary>
- /// 通过名称获取DataGrid模板列中的指定控件
- /// </summary>
- public static object FindName(System.Windows.Controls.DataGrid myDataGrid, int columnIndex, int rowIndex, string controlName)
- {
- object obj = null;
- try
- {
- FrameworkElement item = myDataGrid.Columns[columnIndex].GetCellContent(myDataGrid.Items[rowIndex]);
- if (item == null) //窗体Load时调用item为空
- {
- return null;
- }
- DataGridTemplateColumn temp = (myDataGrid.Columns[columnIndex] as DataGridTemplateColumn);
- obj = temp.CellTemplate.FindName(controlName, item);
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message);
- }
- return obj;
- }
- }
- }
|