Свързване към масив в Xamarin/XAML (имплементиране на навигационни трохи)

Опитвам се да внедря навигация с трохи от хляб. Имам масив от низове в C# кода като този:

    public static readonly BindableProperty CurrentPathProperty =
        BindableProperty.Create<FileBrowser, string[]>(c => c.CurrentPath, null);

    public string[] CurrentPath
    {
        get { return GetValue(CurrentPathProperty) as string[]; }
        set { SetValue(CurrentPathProperty, value); }
    }

Какъв би бил правилният начин за свързване към свойството в XAML (показване на трохите за хляб и актуализиране на CurrentPath, когато един от тях бъде докоснат)? Опитах да намеря в Google ListViews и x:Array, но не виждам лесен начин да направя това. Знам, че имам нужда от PropertyChanged манипулатор на събития, но не ми е ясно какво трябва да се случи от страната на XAML или как би изглеждал манипулаторът.


person mayabelle    schedule 20.07.2015    source източник
comment
Можете ли да предоставите XAML, който използвате?   -  person Mark    schedule 21.07.2015
comment
Защо вашата собственост е BindableProperty? вашето свойство вероятно е Източник на обвързване, а не Цел   -  person Stephane Delcroix    schedule 21.07.2015
comment
Всъщност имах нужда да се актуализира двупосочно - потребителят може да навигира в контролата на файловия браузър, което ще актуализира текущия път, или може да щракне върху трохите за хляб в текущия път, за да актуализира контролата на файловия браузър. В крайна сметка динамично вмъкнах етикети от кода в оформление на стека и след това свързах жест с докосване в манипулатора на събитието за промяна на свойството, за да актуализирам контролата на файловия браузър.   -  person mayabelle    schedule 21.07.2015


Отговори (1)


Ако искате вашата контрола да се актуализира, когато елементите се добавят към вашия масив, трябва да използвате нещо, което изпълнява INotifyCollectionChanged, като ObservableCollection вместо масив.

С това като източник можете да го свържете към ItemSource на ListView; ListView е единственият контрол на Xamarin.Forms, който поддържа DataTemplating веднага.

Всичко по-сложно изисква дефиниране на собствен контрол, наследяване напр. от StackLayout или който и да е друг Layout и се справете със създаването на Label за всеки низ, добавен към вашия масив.

person Stephane Delcroix    schedule 21.07.2015