2012-05-04 167 views
0

別の要素内の要素にアクセスすることについて質問があります。要素内の要素を取得する(親/子)WPF

状況

<grid name=container> 
    <grid name=menu > 
     inside here is the menu 
    </grid 
<button /> 
<grid> 

ボタンが押された場合には(メニュー付き)第2のグリッドを非表示にする必要があります。ボタンを押すとグリッド要素にアクセスするにはどうすればいいですか?これはグリッドの実際の名前を使用せずに、グリッドがデータテンプレート内にあり、複数のオブジェクトが同じテンプレートを使用しますが、実際のアクティブなものだけを非表示にする必要があるためです。

+0

イベントを処理している現在の要素。すなわちDataTemplateを持つもの –

答えて

1

RoutedEventArgsクラスには、必要な情報を判断するために使用できるSource、OriginalSourceプロパティがあります。さらに、送信側引数はイベントハンドラでも使用できます。

次のリンクは、Source、OriginalSource、およびSenderの相違点について説明しています(質問にも回答します)。 RoutedEventArgs.Source vs Sender

RoutedEventArgs.OriginalSource - 最初のイベントを

RoutedEventArgs.Sourceを調達元のオブジェクト - イベントを発生させたオブジェクト。これは通常OriginalSourceと同じですが、複合コントロールを扱うときには、OriginalSourceオブジェクトが含まれている親になることができます*

送信者 - 。まず完全なコードを入れて

+0

私は実際にそれを取得しません。今私はこのコードを使用しています 'Button button =(Button)e.Source Buttonとして; ScatterViewItem item =(ScatterViewItem)ScatterView.ContainerFromElement(button); '変数Itemは、ボタンが含まれている場所のScatterViewItemを提供します。しかし、ScatterView Itemは必要ありませんが、そのScatterView Itemの中に "Menu"という名前のグリッドがあります。 – user1371933

+0

あなたのソースコードを見て、親は必要ありませんが、兄弟です。 これは、親を取得する必要があるため、あなたが見ている子オブジェクトを見つける必要があります。 item.FindName( "menu")と同様のものです。 http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.findname.aspx 上記の場合に完全な関連ソースコードを入力しても問題は解決しません – Tilak

関連する問題