Xamarin 形成绑定标签
Posted
技术标签:
【中文标题】Xamarin 形成绑定标签【英文标题】:Xamarin forms binding Label 【发布时间】:2016-09-25 10:45:00 【问题描述】:基本上我想制作功能,当我向我的编辑器输入文本时,它会出现在我的标签中插入的数据。如果我将页面滑动到另一个页面,则该数据应绑定到我输入数据的上一页中的该标签。
所以我有便携式课程。在那个类中,我有方法 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 错过了一些东西。
【问题讨论】:
你可以试试emptyLabel.SetBinding(Label.TextProperty, new Binding Path = "inputNumb.Text", Mode = BindingMode.TwoWay, Source = this );
或者创建一个属性,在该位置完成更改属性值并使用属性名称inputNumb.Text
@Vishnu,谢谢你的评论。这种方法:emptyLabel.SetBinding(Label.TextProperty, new Binding Path = "inputNumb.Text", Mode = BindingMode.TwoWay, Source = this );
不起作用。创造什么样的财产?会是setbinding属性吗?
一个属性,例如。 InputNumbText
in CoolPage
和 get, set
然后绑定上面的属性Path = InputNumbText
OnCompleted
调用设置属性值并调用OnPropertyChanged(InputNumbText)
@Vishnu 我试过了,但它不起作用。也许您可以将代码上传到 pastebin?
【参考方案1】:
我这样解决了这个问题:
emptyLabel.SetBinding(Label.TextProperty, "Text");
emptyLabel.BindingContext = inputNumb;
【讨论】:
@BinaryTale - 请注意,Xamarin 团队建议在 SetBinding 语句之后设置绑定上下文以解决性能问题:developer.xamarin.com/api/property/…【参考方案2】:确保您的 MyObject 继承并实现 INotifyPropertyChanged,以便在 Number 更改时触发 PropertyChanged。我通常从 XLabs 的 ViewModel 继承,并使用他们的 SetProperty 方法。不要费心在事件中设置绑定。但是 SetBinding 的第二个参数应该是 MyObject 的属性名称“Number”。 BindingContext 也应该 = 东西。
【讨论】:
以上是关于Xamarin 形成绑定标签的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin 形成 MVVM Stacklayout 内容绑定
xamarin 形成 xaml OnPlatform 无法处理绑定