0

私はボタンを作成しています(xamlは、特定のニーズに応じて動的に作成され、常に存在するわけではないボタンのセットであるため、使用しません)。ボタンに何をすべきかを伝えたい場合は、次のようにクリックイベントにメソッドを追加します。

btn.Click += b_ClickMethod;

b_clickMethodには次の署名があります。

private void b_ClickMethod(object sender, RoutedEventArgs e)

私の質問は、メソッドに情報を渡すために、特定のオブジェクトを送信者として渡す方法(または実際にできる場合でも)です。このオブジェクトがすでに別の場所に設定されている場合、それは何を表していますか?

4

1 に答える 1

0

私が通常オブジェクトからそのイベントハンドラーに情報を取得する方法は、そのを使用することDataContextです。これがあなたにとっての選択肢である場合(そうであるかどうかを判断するのは難しい)、それは非常に簡単なことです。ボタンのが設定されている場合DataContext(これはコードビハインドから非常に簡単に実行できます)、次のようにアクセスできます。

private void b_ClickMethod(object sender, RoutedEventArgs e)
{
    // Let's say you're trying to pass a Car-object
    var car = sender.DataContext as Car;

    // Manipulate away.
}

DataContextを設定する方法は、非常に簡単です。

CarViewModel someViewModel = new ViewModel(); // or whatever
Car someCarObject = someViewModel.getSomeCar(); // basically - find the object you would like to send.
btn.DataContext = someCarObject;

お役に立てれば。最後に、そのようなボタンの作成を再検討することをお勧めします。特定のシナリオでボタンのみが必要な場合は、それらのボタンのVisibilityパラメーターをに設定するだけで、よりクリーンなコードが得られVisibility.Hiddenます。

于 2012-08-08T22:36:48.593 に答える