将现有数据加载到MonoTouch.Dialog中

时间:2012-06-16 16:01:36

标签: xamarin.ios monotouch.dialog

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

但我仍然试图用我现有的List<>预填充DialogViewController。我已经尝试使用LoadMoreElement但无法找到它的使用示例,也不知道这是否是最好的方法。

2 个答案:

答案 0 :(得分:1)

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

            _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()和您提供的链接中使用的其他人。

答案 1 :(得分:0)

如果要在现有对话框视图中创建列表,可以创建一个空的Section,并在此部分中将列表中的元素添加为RadioElement:s或{ {3}}:s,取决于您希望能够同时选择的元素数量。

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

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

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。在CheckboxElement的答案中有一个很好的例子来说明如何做到这一点。