Comment faire un WPF DataGrid affiche un ViewModel de la collection avec de liaison et d'un DataTemplate
Tout d'abord, des excuses, comme je suis sûr que c'est la question la réponse est assez simple. Néanmoins, je ne semblons pas à trouver une réponse.
C'est ma première semaine à l'aide de WPF. Je souhaite simplement afficher le contenu d'une sorte de liste à l'intérieur d'une grille de données. Je suis en train d'essayer d'utiliser une ObservableCollection<> et un contrôle DataGrid, mais qui peut changer. Comment puis-je DataTemplate la liste et l'afficher?
La liste est dans un ViewModel, qui a été mis dans les Applications.xaml.cs comme source de données pour la MainWindow.xaml:
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
var window = new MainWindow();
//Create the ViewModel to which
//the main window binds.
var viewModel = new MainWindowViewModel();
//Allow all controls in the window to
//bind to the ViewModel by setting the
//DataContext, which propagates down
//the element tree.
window.DataContext = viewModel;
window.Show();
}
Voici la liste actuelle:
public ObservableCollection<PersonData> SearchResults { get; set; }
Comme pour mon xaml, cependant, je suis un peu perdue -- j'ai essayé de bidouiller avec de liaison et ItemsSource, et n'ont vraiment aucune idée de la façon de les utiliser ici. Je suppose également qu'à l'aide d'un DataTemplate sera nécessaire, car j'ai besoin de le faire savoir en quelque sorte que les colonnes besoin d'afficher certaines propriétés de l'PersonData, comme le prénom et le nom, l'emplacement et le titre. Toute aide est appréciée.
MODIFIER
Plus généralement, comment afficher simplement un ViewModel de collection, qu'avez-vous, période?
OriginalL'auteur Bondolin | 2012-07-06
Vous devez vous connecter pour publier un commentaire.
Votre base
DataGrid
syntaxe devrait ressembler à quelque chose comme ceci:Si vous ne souhaitez pas afficher vos données dans un
DataGrid
, vous pouvez utiliser un ItemsControl.La valeur par défaut
ItemsControl
d'ajouter vos articles à unStackPanel
, et tirer chacun d'entre eux à l'aide d'unTextBlock
lié à la.ToString()
de l'élément. Vous pouvez changer la façon dont lesItemsControl
affiche les éléments en spécifiant votre propreItemsPanelTemplate
etItemTemplate
pour qu'il l'utilise. Pour quelques exemples, découvrez mon blog sur WPF ItemsControl.Il semble que les
DataContext
n'est pas réglée correctement, ou votreSearchResults
collection n'est pas d'élever unPropertyChanged
de notification. Je vous recommande l'outil Snoop pour aider à résoudre le problèmeoui, j'ai trouvé que j'avais oublié d'inclure le INotifiyPropertyChanged interface. Je vous remercie pour votre aide.
OriginalL'auteur Rachel
Ach. L'échec de la pré-étude est fatale -- je n'ai pas implémenter INotifyPropertyChanged. Trouvé comment ici: http://msdn.microsoft.com/en-us/library/ms743695
OriginalL'auteur Bondolin