Liaison XAML à une propriété CollectionViewSource sur un ViewModel
J'ai un simple ViewModel comme:
public class MainViewModel {
ObservableCollection<Project> _projects;
public MainViewModel() {
//Fill _projects from DB here...
ProjectList.Source = _projects;
ProjectList.Filter = ...;
}
public CollectionViewSource ProjectList { get; set; }
}
J'ai mis du DataContext de la fenêtre d'une nouvelle instance de ce Dernier dans le constructeur:
public MainWindow() {
this.DataContext = new MainViewModel();
}
Puis, dans le Xaml, je cherche à lier la ItemsSource d'une zone de liste pour que ProjectList propriété.
Liaison juste ItemsSource comme si ne fonctionne pas:
<ListBox ItemsSource="{Binding ProjectList}" ItemTemplate="..." />
Mais si j'ai d'abord rebase le DataContext cela fonctionne:
<ListBox DataContext="{Binding ProjectList}" ItemsSource="{Binding}" ItemTemplate="..." />
Ne devrait pas la première méthode fonctionne correctement? Que pourrais-je fait de mal?
source d'informationauteur joshperry
Vous devez vous connecter pour publier un commentaire.
Si vous utilisez
CollectionViewSource
vous devez lierItemsSource
àProjectList.View
au lieu deProjectList
. Cela devrait résoudre votre problème.De ce que vous avez fourni la première méthode doit fonctionner parfaitement. Diable se cache quelque part dans les détails.
PS: Peut-être que vous n'avez pas spécifié de mise en œuvre de
INotifyPropertyChanged
interface dans le souci de la taille de message, mais être prudent dans la production. Il est très facile d'obtenir une fuite de mémoire si vous n'avez pas la mettre en œuvre.