ボタンを配列で扱いたい
ボタンを配列で扱いたい!という話が#wp7dev_jpで出ていたので、ちょっと試してみた。
<toolkit:WrapPanel Name="wrapPanel1"> <Button Content="Button" Height="71" Name="button1" Width="160" Click="button_Click" /> <Button Content="Button" Height="71" Name="button2" Width="160" Click="button_Click" /> <!-- あとButtonとかその他UIコンポーネント好きなだけ --> </toolkit:WrapPanel>
みたいなWrapPanelがあったとして、そこからButtonを引っ張り出して配列で扱いたい!
という場合。
…Buttonを配列で扱う良い例が思いつかないので、例えばボタンを押したらある一連のボタンのラベルがindex番号にしたい場合、
private void button_Click(object sender, RoutedEventArgs e) { // WrapPanelの中にある要素からButtonだけ抜き出す var buttons = wrapPanel1.Children.Where(x => { return x is Button; }); // foreachでContent書き換え int count = 0; foreach (Button item in buttons) { item.Content = count++; } }
というようにできます。
まず、wrapPanel1内にある子要素から、Buttonだけ抽出し、それをforeachでループさせてます。
それだけといえば、それだけですが…。
WrapPanel内の特定のボタンを引っ張り出したい場合は、そのボタンに特定のプリフィックスつけて、名前でフィルタリングしてやればいいでしょう。
上記処理を実際に組み込むと、
ボタンをタップすると
ラベルが変わる
ようになります
/* こういう意味じゃなかった…? */