WPFで子孫要素を列挙する方法を教えてください。
http://blog.xin9le.net/entry/2013/10/29/222336
を参考にコードを考えています。
ボタンをひとつだけの場合は、
var button = this //--- Windowの
.Descendants<Button>() //--- ボタン型の子孫要素のうち
.Where(x => x.IsEnabled) //--- 有効なボタンの
.FirstOrDefault(); //--- 最初に見つかったものを取得
なので、ボタンすべてを列挙したいと考えました。
Button[] buttons = (Button[])this //--- Windowの
.Descendants<Button>(); //--- ボタン型の子孫要素
string buttonlist = "";
foreach (Button b in buttons)
if (b.Name != null) buttonlist += b.Name + "\r\n";
MessageBox.Show(buttonlist);
で列挙できるかと思いました。
すると、Button[]の行で、
型 'System.InvalidCastException' のハンドルされていない例外が videoCalendar.exe で発生しました
追加情報:型 '<OfTypeIterator>d__aa`1[System.Windows.Controls.Button]' のオブジェクトを型 'System.Windows.Controls.Button[]' にキャストできません。
というエラーになります。
もとがButtonということは、foreachで回せばいいのかなと思うのですが、どう回すのか、というあたりがぴんと来てないです。
よろしくお願いします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/03/06 13:20