【发布时间】:2017-02-22 10:35:29
【问题描述】:
我有一个共享的 Xamarin.Forms 项目,该问题仅存在于 Android 上。我的问题是,我有一个列表视图,当我单击自定义单元格中的按钮时,它会改变颜色(从蓝色变为绿色)。然后我单击另一个按钮打开另一个页面,当我关闭该页面时,该项目将从列表视图中删除。但是现在被移除的项目下面的项目有一个绿色按钮,而不是蓝色。 这是一个例子:
- 第一张图片 - 显示 ListView,其中包含一个 customcell,其中包含信息和 2 个按钮,请注意它们是蓝色的。
- 第二张图片 - 显示我按下了第一个按钮,现在它变成了绿色。
- 第三张图片 - 显示当我按下第二个按钮时被推送的页面。
- 第四张图片 - 现在我之前点击了图片上的“Bekræft”按钮,消息已发送到 Listview 页面以从列表中删除 RouteElement(它确实如此)。但是现在第一个按钮是绿色的,即使它没有被按下。
RouteElement 模型。
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));
}
}
自定义单元
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);
然后我调用这个 MessagingCenter 函数从导航中的另一个页面中删除。
MessagingCenter.Subscribe<RouteElement>(this, "Refresh",(sender) =>
{
RouteElement r = (RouteElement)sender;
rOC.Remove(r);
}
现在第二个 RouteElement 的按钮是绿色的,尽管它应该是蓝色的。任何帮助深表感谢!
此“错误”仅发生在具有最新 Xamarin.Forms 包的 Android 上
<package id="Xamarin.Forms" version="2.3.3.193" targetFramework="monoandroid70" />
使用这个 Xamarin.Forms 包在 Android 上运行良好
<package id="Xamarin.Forms" version="2.2.0.31" targetFramework="monoandroid70" />
【问题讨论】:
-
能否分享完整的项目以快速重现问题?
-
@YuriS - 不能那样做。
-
测试项目很有用。
-
@JesperHøjer 如果没有完整的 CustomCell 代码,很难判断出什么问题
-
通过查看 SetBinding 语法,您正在使用一些第三方库来设置绑定。您可以发布 SetBinding 正在做什么的源代码吗?同样正如@YuriS 所说,您需要发布 CustomCell 的源代码。
标签: xamarin xamarin.android xamarin.forms