2017-01-25 9 views
2

私は顧客をルーピングしていて、顧客ごとにボタンを1つ作成する必要があります その特定の顧客を削除します。だからここボタンクリック(動的に作成されるボタン)のオブジェクト/アイテムを取得する - スタックパネル

は私のコードです:私はそれをクリックしたとき、私は私のボタンのイベントをクリックして添付することができ

foreach (var item in customersList) 
{ 
    Button btn = new Button(); 
    btn.Content = "Customer": + " " + item.Value; 
    btn.Height = 40; 
    btn.Click += btn_Click; 

    TextBox cust = new TextBox(); 
    cust.Height = 40; 
    cust.Text = item.Value; 

    stackCustomers.Children.Add(cust); 
    stackCustomers.Children.Add(btn); 
} 

どのように私は、顧客を取得しますか?

void btn_Click(object sender, RoutedEventArgs e) 
{  
    //I tried this but it is not working, unfortunatelly... 
    Customer cust = (Customer)sender; 
} 

答えて

1

簡単な方法:良いかもしれない何Button.Tagプロパティ

Button btn = new Button(); 
btn.Tag = item; // .Value maybe? 

// ... 

void btn_Click(object sender, RoutedEventArgs e) 
{ 
    var button = sender as Button; 
    Customer cust = (Customer)button.Tag; 
} 

に顧客を添付:ボタンが含まれている各顧客アイテムの視覚的な表現を作成します。 Button.Clickの代わりにButton.CommandButton.CommandParameter={Binding PathToCustomer}を使用してください。

+0

これは機能しています!そしてより良い解決策について、あなたは私に少しそれを説明できますか?多くのThans! –

+0

@ Roxy'ProあなたはXAMLとcustomersListに関して何を持っているのかをさらに提供しなければならない可能性のある変更について説明することができます。 – grek40

+0

ok私は後でそれを提供するつもりですが、私はどのようにstackpanelにボタンを置くことができますが、お互いに横に保つために、私はOrientation = "Horizo​​ntal" ?おかげで再び –

関連する問題