2017-05-18 15 views
-2

私は構造が次のようになり、国境に包まれGridコントロール(無Nameが割り当てられていない)を取得したい:WPFでコントロールのすべての子孫を検索しますか?

<Grid x:Name="main"> 
    <uc:myUc/> 
    <Border> 
     <!--other elements--> 
    </Border> 
    <Border> 
     <Grid x:Name="myGrid"> 
      <!--I want to get all controls here--> 
     </Grid> 
    </Border> 
</Grid> 

myUcがクリックされたとき、私が欲しいというボタンを持つユーザーコントロールですグリッド内のすべてのコントロールを取得するmyGrid: これは私が使用しているコードですBorderコンテナにNameを与えて、その子を取得できるはずですが、これはアプリケーションの大きな変更です。

var parent = VisualTreeHelper.GetParent(this) as UIElement; 
var grid = (parent as Grid); 
var chldrn = grid.Children; 
foreach (var item in chldrn) 
{ 
    var child = item; 
} 
//I stopped here! 

私が取る制御されdetermieする要素のすべての子孫を検索する方法はありますか?

答えて

0

あなたは自分のタイプ

XAMLの例でコンテナに子のいずれかの種類にアクセスすることができます。

<Grid x:Name="myGrid"> 
    <Button Content="Button1"></Button> 
    <Button Content="Button2"></Button> 
    <CheckBox Content="CheckBox1"></CheckBox> 
</Grid> 

C#例

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    foreach(var Child in myGrid.Children.OfType<Button>()) // this will only get buttons in grid's children 
    { 
     MessageBox.Show(Child.Content); 
    } 

    //another way: 

    foreach(var Child in myGrid.Children) 
    { 
     if (Child is CheckBox) 
     { 
      var checkBox = (CheckBox)Child; 
      checkBox.IsChecked = true; 
     } 
    } 
} 
関連する問題