カスタム ダイアログ クラスを作成しています。コンストラクターで、OptionObject オブジェクトのリストを受け取ります。ある時点でそれが表示され、ユーザーがクリックしたオプションに応じて、OptionObject に挿入されるアクションが実行されます。
public class OptionObject
{
public object Id { get; set; }
public string Text { get; set; }
public Action Action { get; set; }
public OptionObject(object id, string text, Action action)
{
this.Id = id;
this.Text = text;
this.Action = action;
}
}
DialogWindow によってアクションが呼び出される方法は次のとおりです。
this.Options.Tap += (sender, args) => // Options is a ListBox
{
var o = sender as ListBox;
var x = o.SelectedItem as OptionObject;
if(x!=null)
x.Action();
this.IsOpen = false;
};
そして最後に、別のページでダイアログを使用しようとしています:
foreach (var o in eventsOnDate)
{
chooseEventDialogWindow.Data.OptionsList.Add(new OptionObject(o.Text, ()=> /*### don't know what to put in here ###*/ ));
}
問題は、OptionObject.Action が OptionObject.Id プロパティを必要とする場合があることです。右上の狙撃でどのようにアクセスできますか?
編集
可能であれば、このラムダ式にパラメーターを渡したくありません。この Id が必要ない場合があるからです。これが正しい方法である場合は、オプションのパラメーターで問題ありません。
PS
これは質問にとって重要ではありませんが、不必要な議論を避けるために、このダイアログは telerik の RadWindow に基づいています。