Categories: VisualStudio

WPF listbox上のボタンからどのボタンが押されたかをイベントでもらう

WPFでlistbox上にボタンを並べ、そのボタンが押された時にどのボタンが押されたかコード上で取得する

Xaml listboxにボタンを配置



C#コードで

リストボックスに並べるボタンの元になるデータを作成
public MainWindow()
{
InitializeComponent();

List items = new List();

for (int i = 0; i < 30; i++)
{
items.Add(new TestItem(i + ":Test"));
}
l_listbox.ItemsSource = items;

slider.Maximum = 30;
}

Listboxに渡すためのアイテムクラス
public class TestItem
{
public String ButtonContent { get; set; }

public TestItem(String button_name)
{
this.ButtonContent = button_name;

}

}

クリックイベントで、ボタン情報をもらう
private void B_test_Click(object sender, RoutedEventArgs e)
{
var o = (TestItem)((Button)sender).Tag;
MessageBox.Show(o.ButtonContent.ToString());
}

Xamlコードのポイント

Tag=”{Binding}”

で、ボタン情報を紐づけておき、C#コードにて
var o = (TestItem)((Button)sender).Tag;

値を引き出す。

hanakotoko