将对象数据绑定到Int xamarin表单

时间:2015-06-03 18:38:47

标签: xamarin xamarin.forms

我有一个MasterDetailPage,可以创建多个Department对象。我想获取当前的部门编号,以便我可以使用它在我的程序中稍后对列表进行排序。我该怎么做呢?我已经尝试将它绑定到标签然后从中获取数据(非常hacky,我知道),但这是我唯一能想到的。

Department[] departments = {
            new Department ("D", 1), 
            new Department ("De", 7),
            new Department ("G", 4),
            new Department ("M", 9),
            new Department ("Pr", 167),
            new Department ("Fr", 187),
            new Department ("H", 169),
            new Department ("B", 11),
            new Department ("S", 399),
            new Department ("N", 407),
            new Department ("O", 201),
            new Department ("U", 023)
        };

        ListView listView = new ListView {
            ItemsSource = departments
        };

        this.Master = new ContentPage {
            Title = "Departments",       // Title required!
            Content = new StackLayout {
                Children = {
                    header, 
                    listView
                }
            }
        };

        DetailPage2 detailPage = new DetailPage2 ();
        this.Detail = detailPage;  //detail page is where I want to                  use deptNum for sorting

        listView.ItemSelected += (sender, args) => {
            // Set the BindingContext of the detail page.
            this.Detail.BindingContext = args.SelectedItem;

            // Show the detail page.
            this.IsPresented = false;

        };

        // Initialize the ListView selection.
        listView.SelectedItem = departments [0];

    }
    }
}

然后在我的detailpage中,我希望能够将departmentNumber拉出来并将其用作int

using System;
using Xamarin.Forms;

namespace irisxamarin
{
  public class Department :BindableObject
   {
    public Department (string name, int deptNumber)
    {
        this.Name = name;
        this.DeptNum = deptNumber;


    }

    public string Name { private set; get; }

    public int DeptNum { private set; get; }

    public override string ToString ()
    {
        return Name;
    }
 }
}

这是详细信息页面中的一些逻辑。这是我想抓住当前deptNum的地方。

namespace irisxamarin
{
public class DetailPage2 : ContentPage
{
    public DetailPage2 ()
    {

        Request request = new Request ();

        Button settingsButton = new Button {
            Text = "Settings",
            TextColor = Color.Gray
        };

 //......................
//code above and below


ListView itemsList = new ListView { 
            ItemsSource = request.GetList (deptNum) //USE INT HERE

        };

        itemsList.ItemSelected += (sender, args) => {

            this.BindingContext = args.SelectedItem;
        };

        itemLabel.SetBinding (Label.TextProperty, "DeptNum");
    //DeptNum is the data I want but not in a label, just the int val         

        var listFrame = new Frame {
            Content = itemsList,
            OutlineColor = Color.Silver,

        };

1 个答案:

答案 0 :(得分:0)

每个页面只是一个C#类。您可以像对任何类一样传递值 - 通常最简单的方法是

  1. 在构造函数中传递值
  2. 或者如果页面已经存在,请创建公共属性并通过setter设置值
  3. 如果要在整个应用程序中全局设置一个值,可以创建一个在任何地方都可用的静态类,并在该类中设置状态值。