Cześć, spotkałem się wczoraj z takim dość sporym problemem.
Mam zwykły ContentPage, na którym umieszczam ContentView w taki sposób:
<StackLayout>
<views:SheetHeader Sheet="{Binding ActiveSheet}" />
</StackLayout>
ViewModel mojego Page'a oczywiście posiada właściwość Sheet. Teraz w SheetHeader zrobiłem coś takiego:
public Sheet Sheet
{
get { return (Sheet)GetValue(SheetProperty); }
set { SetValue(SheetProperty, value); }
}
public static readonly BindableProperty SheetProperty =
BindableProperty.Create(nameof(Sheet), typeof(Sheet), typeof(SheetHeader),
propertyChanged: OnSheetChanged);
private static void OnSheetChanged(BindableObject bindable, object oldValue, object newValue)
{
SheetHeader obj = bindable as SheetHeader;
Debug.Assert(obj != null);
if (obj == null)
return;
obj.BindingContext = newValue;
}
I co się okazuje? OnSheetChanged wywyoływany jest dwa razy. Raz z poprawnymi danymi, a za drugim razem newValue ma wartość null. Czytałem, że niektórzy też mają taki problem, ale nie widziałem nigdzie rozwiązania. Czy ktoś się z tym spotkał i to ogarnął?