您是否嘗試過使用FindName
?
var col = uc.FindName("MyColumn") as DataGridColumn;
編輯:這個工作在簡單的情況下但它可能不會嵌套的用戶控件。這是你可以用它遞歸的情況下,這裏的一些粗略的實現:
public static object FindNamedObject(FrameworkElement container, string name)
{
var target = container.FindName(name);
if (target == null)
{
int count = VisualTreeHelper.GetChildrenCount(container);
for (int i = 0; i < count; i++)
{
var child = VisualTreeHelper.GetChild(container, i) as FrameworkElement;
if (child != null)
{
target = FindNamedObject(child, name);
if (target != null)
{
break;
}
}
}
}
return target;
}
完美,忙於使用反射來退一步...謝謝 – Chris
@克里斯:高興的是幫助,我只是增加了一個額外的注正如我預料的那樣,在你的情況下這樣的簡單調用會失敗,聽起來更復雜。 –