2011-08-08 7 views
0

radio.Checked += new RoutedEventHandler(VariantChecked); 私はこのコードを持っていると仮定します。 VariantCheckedメソッドに引数を渡したい場合どのような構文を適用する必要がありますか?WPFラジオボタンイベント処理の質問

答えて

1

作成時に、DataContextまたはRadioButtonのTagプロパティにデータオブジェクトを添付します。

RadioButton radio=new RadioButton(); 
radio.DataContext=yourData; 

はその後、イベントハンドラでは、データを取り戻す:

void VariantChecked(object sender, RoutedEventArgs e){ 
    RadioButton radio=(RadioButton)sender; 
    YourData yourData=(YourData)radio.DataContext; 
} 

を私が想定している上記の例では、クラスを持っているか、あなたが提供したいYourDataという名前のstructこと。これは、stringやintやその他のオブジェクト型のようなプリミティブで置き換えることができます。 XAMLからも


上記作品:それはこのような構成より多くの意味になりので

<RadioButton Tag="Static Data, could also be a binding" ... 

は、ここで私は、Tagプロパティをとっているが、DataContextのも取ることができます。イベントハンドラは、タグプロパティからのキャストを除いて同じです。

void VariantChecked(object sender, RoutedEventArgs e){  
    RadioButton radio=(RadioButton)sender;  
    string yourStringFromTag=(string)radio.Tag; 
} 

ところで、あなたは具体的な制御クラスを指定しますが、基本クラスではないことで、コードをより汎用的にすることができますが:これは...

+0

を助けた

void VariantChecked(object sender, RoutedEventArgs e){ FrameworkElement fe=(FrameworkElement)sender; string yourStringFromTag=(string)fe.Tag; } 

・ホープ最後の例でタグを使用してプロパティをアタッチしましたか?それに複数のオブジェクトを付けることは可能ですか? – Sergey

+0

@ Sergey:2番目の例では、xamlを使って行いました。 3つの例では、私は付いていません。この例では、具体的なクラスにキャストする必要はなく、ベースクラスをとることもできることを示しています。複数のオブジェクトを添付する場合は、構造体、コンテナクラスを宣言するか、Tuple-class(http://msdn.microsoft.com/en-us/library/system.tuple.aspx)を使用してください。 – HCL