2015-07-20 1 views
0

J'essaie d'implémenter la navigation de miettes de pain. J'ai un tableau de chaînes dans le code C# comme ceci:Liaison à un tableau dans Xamarin/XAML (implémentation de fil d'Ariane)

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); } 
    } 

Quelle serait la bonne façon de se lier à la propriété en XAML (afficher la chapelure et mettre à jour CurrentPath lorsque l'un d'entre eux est taraudés)? J'ai essayé googling ListView s et x:Array mais ne vois pas un moyen simple de le faire. Je sais que j'ai besoin d'un gestionnaire d'événements PropertyChanged, mais je ne vois pas très bien ce qui doit se passer du côté XAML ou ce à quoi le gestionnaire ressemblerait.

+0

Pouvez-vous fournir le code XAML que vous utilisez? – Mark

+0

Pourquoi votre propriété est-elle un BindableProperty? Votre propriété est probablement la ** Source ** d'une liaison, pas la ** Cible ** –

+0

Je l'avais vraiment besoin pour mettre à jour bidirectionnellement - l'utilisateur peut naviguer dans le contrôle de l'explorateur de fichiers qui mettrait à jour le chemin actuel, ou ils pourraient cliquer sur les miettes de pain dans le chemin actuel pour mettre à jour le contrôle du navigateur de fichiers. J'ai fini par insérer dynamiquement des étiquettes à partir du code dans une disposition de pile, puis en accrochant un geste de tap dans le gestionnaire d'événement changé de propriété pour mettre à jour le contrôle de navigateur de fichiers. – mayabelle

Répondre

1

Si vous souhaitez que votre contrôle se mette à jour lorsque des éléments sont ajoutés à votre tableau, vous devez utiliser un élément implémentant INotifyCollectionChanged, comme ObservableCollection au lieu d'un tableau.

Cela en tant que source, vous pouvez le lier à l'ItemSource d'un ListView; le ListView étant les seuls contrôles Xamarin.Forms qui prennent en charge DataTemplating out of the box.

Tout ce qui est plus complexe nécessite de définir votre propre contrôle, héritant par ex. à partir de StackLayout ou tout autre Layout, et gérer la création d'un Label pour chacune des chaînes ajoutées à votre tableau.