我正在创建一个自定义对话框类。它在构造函数中采用 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 属性。我怎样才能在上面的狙击中访问它?
编辑
如果可能的话,我不想将任何参数传递给这个 lambda 表达式,因为有时不需要这个 ID。如果这是正确的方法,可选参数会很好。
附言
这对于这个问题并不重要,但为了避免不必要的讨论,这个对话框基于 Telerik 的 RadWindow。