Ich erhalte eine ObjectDisposedException, wenn die Eigenschaft eines Listenelements von einem anderen Bildschirm geändert wird. Hier ist mein Renderer-Code.Xamarin Formulare: System.ObjectDisposedException
namespace SmartwebsCrossPlatform.CustomRenderers {
public class GradientViewCellRenderer : ViewCellRenderer {
View cellCore;
protected override View GetCellCore(Cell item, View convertView, ViewGroup parent, Context context) {
cellCore = base.GetCellCore(item, convertView, parent, context);
DirtyChanged();
return cellCore;
}
protected override void OnCellPropertyChanged(object sender, PropertyChangedEventArgs e) {
base.OnCellPropertyChanged(sender, e);
if (e.PropertyName == "IsDirty")
DirtyChanged();
}
void DirtyChanged() {
var viewCell = Cell as GradientViewCell;
if(cellCore != null && viewCell != null) {
int r = viewCell.IsDirty
? Resource.Drawable.listViewGradientDirty
: Resource.Drawable.listViewGradient;
try {
cellCore.SetBackgroundResource(r);
} catch (ObjectDisposedException ex) {
Log.Warning(ex, "GradientViewCellRenderer.DirtyChanged");
}
}
}
}
}
Frage: Wie erkenne ich, ob CellCore in DirtyChanged entsorgt wurde?