すでに提案されていることに沿って、名前を探すこともできます。
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が言ったように、名前を付けてコードビハインドからアクセスできるのであれば、これがはるかに簡単です。