2016-05-10 9 views
0

親コンテナの可視性を設定するには、それに含まれる各コントロールの可視性をチェックします。含まれているコントロールが表示されていない場合、親コンテナは非表示になります。私は、コンテナに含まれるコントロールのそれぞれをハードコーディングすることでこれを行う方法を知っています。しかし、私はコンテナがコードの背後に含まれている各コントロールの名前を入力せずに、このチェックを実行したいと思います。コード内でこれを行う方法はありますか?私はマルチデータトリガーを探しているわけではありません。親コンテナの可視性を設定する

+0

を設定あなたが 'IsVisible'プロパティにバインドしておらず、結果に対して論理を実行していれば、その1つで長い旅ができます。あなたが望むなら、あなたは依存ツリー全体を歩くことができます。これは出発点です:http://www.hardcodet.net/2008/02/find-wpf-parent。あなたはそれを他の方向に進むために再加工して、すべての子供が集合的な可視性を見つけるようにすることができます。 –

答えて

2

ちょうど私があなたに行く必要があるだろう期待したい子コントロールを通して反復性と視認性

Winフォームのバージョン

var isParentVisible = false; 

foreach(Control child in ParentContainer.Controls) 
{ 
    isParentVisible = child.IsVisible; 

    if(isParentVisible) 
     break; 
} 

WPF版

var isParentVisible = false; 

foreach (var child in LogicalTreeHelper.GetChildren(ParentContainer)) 
{ 
    if (!(child is UIElement)) { 
    continue; 
    } 

    isParentVisible = child.IsVisible; 

    if(isParentVisible) 
    break; 
} 
+1

私が正しく覚えていれば、それは最初のレベルの子供しか得られません。それがあなたのために働くならば、素晴らしい!しかし、そうでない場合は、すべての子どもの子を繰り返し処理するために再帰を使用する必要があります。例を探しているなら、私は[このヘルパーライブラリのセット](https://rachel53461.wordpress.com/2011/10/09/navigating-wpfs-visual-tree/)と書いてあります。正しい方向に。可視性をチェックするのではなく、特定のタイプの親オブジェクトまたは子オブジェクトを見つけるためのものですが、概念は同じです。 – Rachel

+0

あなたは正しいです!しかし、私は質問には子どもの話がなかったと思う – SirH

関連する問題