Grundsätzlich möchte ich Funktionalität machen, wenn ich Text in meinen Editor eingeben wird es eingefügt Daten auf meinem Etikett erscheinen. Und wenn ich die Seite auf eine andere Seite wische, sollten diese Daten an das Etikett auf der vorherigen Seite gebunden sein, auf dem ich die Daten eingegeben habe.Xamarin Formen Bindung Label
So habe ich tragbare Klasse. In dieser Klasse habe ich Methode public ContentPage CreatePage(MyObject thing)
hier definiere ich viele Labels, Felder, Schaltflächen und usw. Aber ich werde wichtigsten Dinge zeigen: Hier bin ich mein Label und Editor definieren:
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);
}
}
ich versucht habe, eine solche impelemnt Ereignis:
inputNumb.Completed += (sender, args) =>
{
inputNumb.SetBinding(Label.TextProperty, "Text");
inputNumb.BindingContext = thing.Number;
};
aber es funktioniert nicht. Und ich denke, weil es auf dieselbe Weise ist. Auch ich habe versucht, außerhalb der Methode Bereich, indem Sie eine solche Linie auf CreatePage
Methode inputCarNumb.Completed += InputCarNumb_Completed;
implementieren Aber dann, wenn Sie Ihre Variable definieren inputNumb erkennt es nicht und ich weiß nicht, wie in anderen Fällen zu implementieren. Ich weiß, dass es sehr einfach ist, aber ich denke, ich vermisse etwas, indem ich SetBinding/BindingContext tue.
Können Sie versuchen 'emptyLabel.SetBinding (Label.TextProperty, neue Bindung {Path = "inputNumb.Text" Mode = BindingMode.TwoWay, Quelle = this}); ' Oder erstellen Sie eine Eigenschaft, wo bei abgeschlossene Änderung Eigenschaft Wert und verwenden Sie den Namen der Eigenschaft an dieser Stelle' inputNumb.Text' – Vishnu
@ Vishnu, danke für den Kommentar. Dieser Ansatz: 'emptyLabel.SetBinding (Label.TextProperty, neue Bindung {Path =" inputNumb.Text ", Mode = BindingMode.TwoWay, Quelle = this});' nicht funktionieren. Welche Art von Immobilie erstellen? Es wird bindendes Eigentum sein? – BinaryTie
Eine Eigenschaft z. 'InputNumbText' in' CoolPage' mit 'bekommen, Set' und binden dann diese Eigenschaft in oben' Path = InputNumbText' 'set Eigenschaftswert OnCompleted' zu rufen und rufen' OnPropertyChanged (InputNumbText) ' – Vishnu