Ok, c'est un peu bizarre mais c'est fondamentalement ce que j'ai besoin de faire. J'ai un contrôle WPF lié à un objet Document. L'objet Document a une propriété Pages. Donc, dans mon ViewModel, j'ai une propriété CurrentDocument et une propriété CurrentPage.WPF: Lier DisplayMemberPath dans une zone de liste déroulante à l'élément
Maintenant, j'ai un combobox que j'ai lié à la propriété CurrentDocument.Pages et met à jour la propriété CurrentPage.
<ComboBox ItemsSource="{Binding CurrentDocument.Pages}"
DisplayMemberPath="???"
SelectedItem="{Binding CurrentPage, Mode=TwoWay}">
</ComboBox>
Avec-moi jusqu'à présent? Tout cela est très bien, sauf que je dois le DisplayMemberPath pour voir « Page 1 », « Page 2 », etc .....
J'ai essayé de créer un convertisseur comme celui-ci:
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
string pageNumber = "Page {0}";
return string.Format(pageNumber, value);
}
Et tenté de lier DisplayMemberPath à elle comme ceci:
DisplayMemberPath="{Binding RelativeSource={RelativeSource Self}, Path=Index, Converter={StaticResource pgTitleConv}}"
Mais il ne serait pas apparaître dans le texte de zone de liste déroulante !!!
Il n'y a pas de propriété "Index" mais je ne sais pas comment faire ... Comment accéder à l'index de l'élément auquel la combobox est liée ... ??????
a fonctionné comme un charme pour ma situation. – JohnathanKong
+1 Super tour! – Olwaro
Fonctionne mais l'utilisation d'un convertisseur a un impact sur les performances. J'ai adapté ci-dessus pour utiliser la fonction StringFormat de liaison. par exemple. –
Darren