我用這個方法來列出用戶控件的所有按鈕:VisualTreeHelper沒有找到控制DataGridTemplateColumn.CellTemplate
private static IEnumerable<T> FindVisualChildren<T>(DependencyObject depObj) where T : DependencyObject
{
if (depObj != null)
{
int NbChild = VisualTreeHelper.GetChildrenCount(depObj);
for (int i = 0; i < NbChild; i++)
{
DependencyObject child = VisualTreeHelper.GetChild(depObj, i);
if (child != null && child is T)
{
yield return (T)child;
}
foreach (T childNiv2 in FindVisualChildren<T>(child))
{
yield return childNiv2;
}
}
}
}
public static void ImplementShortCut(ContentControl page)
{
List<Button> ListButton = new List<Button>();
ListButton = FindVisualChildren<Button>(page).ToList();
....
}
它的工作很好,除了按鍵內部DataGridTemplateColumn.CellTemplate
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<Button x:Name="Btn_Edit"
Click="Btn_EditTest_Click"/>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
'VisualTreeHelper.GetChild'do es似乎無法在datagrid項目中找到控件。
應該工作。什麼是「頁面」,您在哪裏調用該方法? – mm8
'page'是一個UserControl,該方法在load方法(TestPage_Loaded)中調用,它自己在'page'的構造函數中調用(this.Loaded + = TestPage_Loaded;)但是我沒有任何問題在數據網格之外按鈕! ! – Alematt
這是不可理解的...請發佈您的代碼。 DataGrid是否位於「頁面」中? – mm8