Ich habe ein gemeinsames Xamarin.Forms-Projekt, und das Problem existiert nur auf Android. Mein Problem ist, dass ich eine Listenansicht habe, und wenn ich auf eine Schaltfläche in meiner benutzerdefinierten Zelle klicke, ändert sich die Farbe (von blau nach grün). Dann klicke ich auf eine andere Schaltfläche, die eine andere Seite öffnet, und wenn ich diese Seite schließe, wird das Objekt aus der Listenansicht entfernt. Aber jetzt hat der Gegenstand unter dem entfernten einen grünen Knopf anstelle eines blauen. Hier ein Beispiel:Xamarin Formulare CustomCell in Listview Button Hintergrundbindung funktioniert nicht?
- Erstes Bild - Anzeigen der Listview mit einer customcell Insider-Informationen und 2-Tasten enthalten bemerken, dass sie blau sind.
- Zweites Bild - Zeige, dass ich die erste Taste gedrückt haben, und es ist nun grün geworden.
- Thrid Bild - Zeigt die Seite, die gedrückt wird, wenn ich die zweite Taste drücken.
- Viertes Bild - Jetzt habe ich die „Bekræft“ -Taste auf dem Bild vor geklickt, und die Nachricht wurde an der Listview-Seite geschickt die entfernen RouteElement von der Liste (und so tut es). Aber jetzt ist der erste Knopf grün, obwohl er nicht gedrückt wurde.
Das RouteElement Modell.
public class RouteElement : INotifyPropertyChanged
{
string arrivalBtnColor;
public event PropertyChangedEventHandler PropertyChanged;
public DateTime ArrivalTime { get; set; }
public DateTime DepartureTime { get; set; }
public bool ReadyForService { get; set; }
public bool DeliveredToService { get; set; }
public string ArrivalBtnBColor
{
get { return arrivalBtnColor; }
set
{
if (arrivalBtnColor != value)
{
arrivalBtnColor = value;
OnPropertyChanged("ArrivalBtnBColor");
}
}
}
public RouteElement()
{
this.ArrivalBtnBColor = "Default";
}
protected virtual void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this,
new PropertyChangedEventArgs(propertyName));
}
}
Die CustomCell
Button ArrivalBtn = new Button
{
Text = "Ankomst",
FontSize = 24,
BorderRadius = 10,
HeightRequest = 75,
TextColor = Color.FromHex("#FFFFFF")
};
ArrivalBtn.SetBinding(Button.BackgroundColorProperty, "ArrivalBtnBColor",BindingMode.Default, new StringToColorConverter(), null);
Label PostalNoLbl = new Label()
{
TextColor = Color.Black,
HorizontalTextAlignment = TextAlignment.Center,
VerticalOptions = LayoutOptions.Start,
FontSize = Device.GetNamedSize(NamedSize.Large, typeof(Label))
};
PostalNoLbl.SetBinding(Label.TextProperty, "Postcode");
PostalNoLbl.SetBinding(Label.IsVisibleProperty, "Postcode", BindingMode.Default,new StringToBoolConverter(),null);
Dann rufe ich diese MessagingCenter Funktion von einer anderen Seite in der Navigation zu entfernen.
MessagingCenter.Subscribe<RouteElement>(this, "Refresh",(sender) =>
{
RouteElement r = (RouteElement)sender;
rOC.Remove(r);
}
Und jetzt ist der Button des zweiten RouteElement grün, obwohl es eigentlich blau sein soll. Jede Hilfe wird sehr geschätzt!
Dieser „Fehler“ geschieht nur auf Android mit der neuesten Paket von Xamarin.Forms
<package id="Xamarin.Forms" version="2.3.3.193" targetFramework="monoandroid70" />
Es auf Android mit diesem Paket von Xamarin.Forms adaequat
<package id="Xamarin.Forms" version="2.2.0.31" targetFramework="monoandroid70" />
können Sie das komplette Projekt teilen, um das Problem schnell zu reproduzieren? –
@ YuriS - Kann das nicht tun. –
Ein Testprojekt kann nützlich sein. – Scinfu