2016-04-20 13 views
0

私はButtonのリストを持つWPFアプリケーションを持っています。いつでも、そのうちの1つだけがVisibleです。私はプログラムでそれを得ることができるようにしたいButtonリストをループせずに、C#で特定のプロパティとは異なる残りのリスト項目を取得するにはどうすればよいですか?

私はforeachループを使用してリストを通過しようとすると、より現在のButtonが表示されているかどうかを確認しました:をループすることなく、

var buttons = ButtonsHolder.Children.OfType<Button>().ToList(); 

foreach(var button in buttons) 
{ 
    if(button.IsVisible) 
     return button; 
} 

は、これを行うにはよりエレガントな方法がありますリスト?

+3

FirstOrDefaultメソッドを使用してのサンプルコードを書き換えることが可能であるアクティブな1つのボタンしかありませんか?あなたがそれをアクティブにすると、あなたはそれの記録を残すことができます – BugFinder

+0

それはアイデアですが、私はプロパティで要素を見つけるという一般的な考えにもっと興味があります。どうもありがとう! – Sipo

+3

'Return ButtonsHolder.Children.OfType

答えて

1

述語

return ButtonsHolder.Children 
        .OfType<Button>() 
        .FirstOrDefault(b => b.IsVisible); 
+0

私のために十分なエレガント:) – Sipo

+0

これは、あなたがすでに実装しているもののためのちょうど "コード砂糖"であることに注目する価値があります。 – Joe

関連する問題