2017-02-27 1 views
-1

J'ai le contrôle où je lie les images. Le code dans mon modèle de vue se présente comme suit:WPF: Comment obtenir SelectedItem après avoir appliqué le convertisseur de valeur?

public List<IDocument> SelectedEventPhotoList 
{ 
    get { return _selectedEventPhotoList; } 
    set 
    { 
     if (Equals(value, _selectedEventPhotoList)) 
      return; 

     _selectedEventPhotoList = value; 
     RaisePropertyChanged(() => SelectedEventPhotoList); 
    } 
} 

public IDocument SelectedEventPhoto 
{ 
    get { return _selectedEventPhoto; } 
    set 
    { 
     if (Equals(value, _selectedEventPhoto)) 
      return; 

     _selectedEventPhoto = value; 
     RaisePropertyChanged(() => SelectedEventPhoto); 
    } 
} 

Les regards de liaison de la manière suivante:

<ListView Grid.Row="0" 
      ItemsSource="{Binding SelectedEventPhotoList, Converter={StaticResource PathToFileConverter}}" 
      SelectedItem="{Binding SelectedEventPhoto}" 

Comme vous pouvez le voir, j'ai une liste des types IDocument de se lier à ItemsSource et SelectedItem est de IDocument type. Mais, les images ont une propriété Source qui est de type string et j'ai utilisé le convertisseur de valeur PathToFileConverter pour convertir les types d'IDocument en chaînes.

Le problème est en fait qu'après avoir utilisé le convertisseur, SelectedItem est null.

Comment puis-je atteindre le SelectedItem conserve le type IDocument, qui n'est pas null?

+0

Pourquoi êtes-vous en train de convertir le ItemsSource à un autre type? Cela n'a aucun sens. – mm8

+0

Parce que IDocument n'est pas correct, tapez la propriété Source de l'image. D'un autre côté, j'ai besoin que SelectedItem soit un type IDocument. – tesicg

+1

Vous devez appliquer le convertisseur à la liaison de la propriété Source puis pas à la ItemsSource de ListView. – mm8

Répondre

0

Vous devez appliquer le convertisseur à la propriété Source liaison du Image et non au ItemsSource du ListView

Le type de la propriété qui est lié à la propriété SelectedItem d'un ListView devrait toujours être T si la ItemsSource La propriété est liée ou définie sur IEnumerable<T>.

0

Vous devez supprimer le convertisseur de la liaison ItemSource, et ajouter DisplayMemberPath = « PathOfFileProperty », qui « PathOfFileProperty » est la propriété de chaîne sur IDocument qui indiquent le chemin du fichier