关于 xamarin.ios:将现有数据加载到 MonoTouch.Dialog 中

Loading existing data into MonoTouch.Dialog

我是 VS/C# 背景的 MonoTouch 新手,我正在尝试重写现有的 c# 应用程序。
我制作了一个简单的 MonoTouch 应用程序,它成功地将数据从 XML 文件加载到 List<> 中,并在我发现 MonoTouch.Dialog 的存在时开始添加主/详细代码,这看起来会让我的工作更容易。因此,我使用 http://docs.xamarin.com/ios/tutorials/MonoTouch.Dialog 上的示例代码开始了一个新项目,更改了基本类以匹配我需要的内容。

但我一直在尝试用我现有的 List<> 预填充 DialogViewController。我曾尝试使用 LoadMoreElement,但找不到它的使用示例,也不知道这是否是最好的方法。


谢谢安德斯。
在过渡期间,我发现了一种不同的方法:

1
2
3
4
5
6
7
8
9
10
11
12
            _rootElement = new RootElement ("Riders")
        {
            new Section()
            {
                from x in riderList.Riders select (Element) new RootElement(x.Name)
                {
                    new Section()
                    {
                        new StringElement("Rider",x.Name),
                        new StringElement("Club",x.Club),
                        ....
                        ....

...我两个都试一下,看看哪个最适合。
但我正在努力寻找任何文档来描述对话框类的方法,例如Section.AddAll() 和您提供的链接中使用的其他内容。


如果你想在现有的对话框视图中创建一个列表,你可以例如创建一个空的 Section 并将列表中的元素添加到列表中作为 RadioElement:s 或 CheckboxElement:s ,取决于您希望能够同时选择多少个元素。

为方便选择,您可能需要创建一个 Group/RadioGroup 并在您的部分中创建相应的列表元素时引用该组。

这是一个创建新 Section 并添加列表元素的快速示例,假设只能同时选择一个元素:

1
2
3
4
5
6
7
var list = new List<SomeClass> { ... };

var listGroup = new RadioGroup("grp", 0);
var listSection = new Section();

listSection.AddAll(list.Select(elem =>
    new RadioElement(elem.ToString(),"grp") as Element));

如果您想要更专业地处理列表中的元素或与列表操作相关的事件,您可能需要子类化 RadioElementCheckboxElement。在这个 SO question 的答案中有一个很好的例子来说明如何做到这一点。