Xamarin形成绑定标签

时间:2016-05-27 07:41:12

标签: c# data-binding xamarin xamarin.forms

基本上我想制作功能,当我向我的编辑器输入文本时,它会向我的标签显示插入的数据。如果我将页面刷到另一个页面,那么该数据应该绑定到我输入数据的上一页中的那个标签。

所以我有便携式课程。在那个课程中,我有方法public ContentPage CreatePage(MyObject thing),我在这里定义了许多标签,方框,按钮等。但我会指出最重要的事情:我在这里定义我的标签和编辑:

public partial class CoolPage: CarouselPage
    {
    public CoolPage()
        {
          foreach (MyObject p in things)
            {
                Children.Add(CreatePage(p));
            }
        }
    public ContentPage CreatePage(MyObject thing) {
        var emptyLabel = new Label
                    {
                        Text = "Text",
                        WidthRequest = 50,
                        HeightRequest = 50,
                        BackgroundColor = Color.White
                    };
                    ((StackLayout)page.Content).Children.Add(emptyLabel);

        var inputNumb = new Editor
                    {
                        Text=thing.Number,
                        TextColor = Color.Black,
                        HorizontalOptions = LayoutOptions.Fill,
                        VerticalOptions = LayoutOptions.Fill,
                        IsVisible = true,
                        BackgroundColor = Color.White
                    };
                    inputNumb.SetBinding(Label.TextProperty, "Text");
                    inputNumb.BindingContext = thing.Number;
                    ((StackLayout)page.Content).Children.Add(inputNumb);
    }
}

我试图阻止这样的事件:

inputNumb.Completed += (sender, args) =>
            {
                inputNumb.SetBinding(Label.TextProperty, "Text");
                inputNumb.BindingContext = thing.Number;
            };

但它不起作用。我认为因为它采用相同的方法。我还试图通过在CreatePage方法inputCarNumb.Completed += InputCarNumb_Completed;上实现这样一行来实现方法范围。但是当你定义变量inputNumb时它无法识别并且我不知道如何实现其他情况。我知道这很简单,但我认为我通过SetBinding / BindingContext错过了一些东西。

2 个答案:

答案 0 :(得分:2)

我解决了这个问题:

emptyLabel.SetBinding(Label.TextProperty, "Text");
emptyLabel.BindingContext = inputNumb;

答案 1 :(得分:0)

确保MyObject继承并实现INotifyPropertyChanged,以便在Number更改时触发PropertyChanged。我通常继承自XLabs的ViewModel,并使用他们的SetProperty方法。不要在事件中设置绑定。但是SetBinding的第二个参数应该是" Number"这是MyObject的属性名称。另外BindingContext应该= thing。