gpt4 book ai didi

c# - 如何将数据传递给 MonoTouch.Dialog 的委托(delegate)?

转载 作者:可可西里 更新时间:2023-11-01 05:15:39 24 4
gpt4 key购买 nike

给定以下代码,如何将“名字”、“姓氏”等数据传递到我的方法 BookASession.SendMessage(); 中?

RootElement CreateBookASessionRoot() 
{
return new RootElement("Book a Session") {
new Section() {
new EntryElement("First Name", "First Name", ""),
new EntryElement("Last Name", "Last Name", ""),
new EntryElement("Email", "Email", "") { KeyboardType = UIKeyboardType.EmailAddress },
new DateElement("Event Date", DateTime.Now),
new RootElement ("Type of Shoot", new RadioGroup (0)){
new Section (){
new RadioElement("Wedding"),
new RadioElement("Portrait"),
new RadioElement("Boudoir"),
new RadioElement("Other")
}
} ,
new EntryElement("Message", "Message", "")
} ,
new Section () {
new StringElement("Send", delegate { BookASession.SendMessage(); } )
}
};
}

最佳答案

我喜欢通过保留对我的输入元素的引用来完成此操作。这样我就可以轻松获取他们的输入值,而无需搜索整个元素树。为此,我将特定屏幕的创建逻辑封装在一个单独的类中,如下所示:

public class BookASessionScreen
{
private RootElement _root = null;

private EntryElement _firstName = null;

private EntryElement _lastName = null;

private EntryElement _email = null;

private DateElement _date = null;

private RootElement _typeOfShoot = null;

private EntryElement _message = null;

private void CreateRoot()
{
_firstName = new EntryElement("First Name", "First Name", "");
_lastName = _firstName = new EntryElement("First Name", "First Name", "");
_email = new EntryElement("Email", "Email", "") { KeyboardType = UIKeyboardType.EmailAddress };
_date = new DateElement("Event Date", DateTime.Now);
_typeOfShoot = new RootElement ("Type of Shoot", new RadioGroup (0)){
new Section () {
new RadioElement("Wedding"),
new RadioElement("Portrait"),
new RadioElement("Boudoir"),
new RadioElement("Other")
}
};
_message = new EntryElement("Message", "Message", "");

_root = new RootElement("Book a Session") {
new Section() {
_firstName,
_lastName,
_email,
_date,
_typeOfShoot,
_message
} ,
new Section () {
new StringElement("Send", delegate {
//BookASession.SendMessage(_firstName.Value, _lastName.Value, ...)
})
}
};
}

public RootElement Root
{
get {
if (_root == null) {
CreateRoot();
}
return _root;
}
}
}

此外,您可能希望通过让类公开一个事件来解耦表单处理逻辑,如下所示:

1 - 创建一个将保存事件数据的类,扩展 EventArgs:

public class BookASessionArgs : EventArgs
{
public string FirstName
{
get;
set;
}

public string LastName
{
get;
set;
}

public string Email
{
get;
set;
}
}

2 - 在 BookASessionScreen 中声明您的事件:

public event EventHandler BookASession;

3 - 在您的委托(delegate)中触发事件

if (BookASession != null) {
BookASession(this, new BookASessionArgs() {
FirstName = _firstName.Value,
LastName = _lastName.Value
//..
});
}

关于c# - 如何将数据传递给 MonoTouch.Dialog 的委托(delegate)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8410090/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com