你既可以使用名稱獵走,沿着什麼一直線已經建議:
var childControl = (MyChildControlType)this.Grid.FindName("MyChildControlNameEtc");
或者,如果你想要一個更通用的方法是什麼您已經嘗試(例如,如果你想用不同的屬性來查找),你可以嘗試:
var childControl = (MyChildControlType)this.Grid.Children.OfType<FrameworkElement>().Single(f => f.Name == "Blah");
或
var childControl = (MyChildControlType)this.Grid.Children.OfType<MyChildControlType>().Single(f => f.Name == "Blah");
或者你可以使用VisualTreeHelper,這將與非網格工作,如果你需要遞歸向下的可視化樹會特別很好地工作:
for(int i = 0; i < VisualTreeHelper.GetChildrenCount(this.Grid); ++i)
{
var child = VisualTreeHelper.GetChild(this.Grid, i) as FrameworkElement;
if (child != null && child.Name == "Blah")
return child;
}
但是真的如果你只需要命名它並從代碼隱藏中訪問它,就像John Bowen說的那樣,這是迄今爲止最簡單的。 「作爲垃圾桶蓋上的垃圾,醜陋」
你想要什麼元素?不應該在後面的代碼中操作XAML元素。 – 2013-02-12 04:17:33
給孩子一個x:姓名屬性 – awright18 2013-02-12 04:20:40