2015-07-20 3 views
0

Я пытаюсь внедрить навигацию по крошке. У меня есть массив строк в коде C# как это:Связывание с массивом в Xamarin/XAML (реализация панировочных сухарей)

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, когда один из них сливают)? Я пробовал googling ListView s и x:Array, но не вижу прямого способа сделать это. Я знаю, что мне нужен обработчик событий PropertyChanged, но мне непонятно, что должно произойти на стороне XAML или как выглядит обработчик.

+0

Можете ли вы предоставить XAML, который используете? – Mark

+0

Почему ваша собственность является BindableProperty? ваша собственность, вероятно, является ** источником ** привязки, а не ** Target ** –

+0

Мне действительно нужно было ее обновить двунаправленно - пользователь может перемещаться внутри элемента управления браузером файлов, который будет обновлять текущий путь, или они могут щелкнуть на хлебных крохах в текущем пути, чтобы обновить управление браузером файлов. Я закончил динамически вставлять метки из кода в макет стека, а затем подключить жест выделения в свойстве обработчика событий, чтобы обновить управление браузером файлов. – mayabelle

ответ

1

Если вы хотите, чтобы ваш элемент управления обновлялся, когда элементы добавляются в ваш массив, вы должны использовать что-то, реализующее INotifyCollectionChanged, например ObservableCollection вместо массива.

С этим в качестве источника вы можете связать его с ItemSourceListView; ListView является единственным элементом управления Xamarin.Forms, который поддерживает DataTemplating из коробки.

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

Смежные вопросы