WPF ItemsSource de Liaison
J'ai un contrôle Datagrid dans mon application WPF et je suis en train de lier le contrôle à une ObservableCollection bien dans ma Fenêtre Principale de la classe. La propriété, je suis en train de lier est défini comme:
private ObservableCollection<RequestResult> m_SentRequests = new ObservableCollection<RequestResult>();
public ObservableCollection<RequestResult> SentRequests { get { return m_SentRequests; } }
Mon datagrid est dans un groupe par qui a le datacontext ensemble de la MainWindow:
<GroupBox Header="Results" Height="275" HorizontalAlignment="Stretch" Margin="0,305,0,0" Name="grpResults" VerticalAlignment="Top" Width="712" DataContext="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=my:MainWindow, AncestorLevel=1}}">
<Grid>
<DataGrid AutoGenerateColumns="False" Height="246" HorizontalAlignment="Stretch" Margin="6,6,6,0" Name="dgResults" VerticalAlignment="Top" ItemsSource="{Binding Path=SentRequests}" DataContext="{Binding}" IsSynchronizedWithCurrentItem="True" />
</Grid>
</GroupBox>
Le problème que je rencontre est que dans la fenêtre des propriétés, quand je sélectionne SentRequests que mon ItemsSource, je n'ai pas encore sélectionnez l'option "Modifier la Propriété Liés aux Colonnes" option. Je reçois un "Vous devez définir ItemsSource avant de pouvoir effectuer cette action" boîte de dialogue. Je reçois la même erreur lors de la sélection de "Générer des Colonnes" et "Supprimer des Colonnes". C'est comme si je n'ai pas de régler quoi que ce soit dans la propriété ItemsSource pour mon Dialogue.
Je peux mettre AutoGenerateColumns à true si et je vois mes données se limite bien (mais pas avec les colonnes que je veux vous montrer).
Je suis très nouveau pour WPF et je suis juste à écrire ce que un test rapide d'application pour les essais d'un service windows.
Tout savoir ce que je fais mal?
DataContext="{Binding}"
dans le contrôle DataGrid est redondant, je pense, parce qu'en général DataContext est héréditaire.Merci, je l'ai fait nettoyer. Il n'a pas faire une différence (non pas que vous pensiez). Probablement un artefact de moi en essayant plusieurs choses.
OriginalL'auteur Redbaran | 2011-03-28
Vous devez vous connecter pour publier un commentaire.
Je ne crois pas que vous devez le Chemin de paramètre au sein de votre itemSource. Vous devriez être capable de définir la liaison comme ItemsSource={Binding SentRequests}
Vous pouvez également lier à la grille de l'élément source dans le code par exemple si je crée un mannequin de collection:
puis le remplir
Que je ne puis définir la source des éléments dans la page d'accueil contsructor ou de la méthode:
.gridviewname.ItemsSource = "AllPeople";
pouvez-vous expliquer ce que vous entendez par le designer? Faites-vous allusion à la liaison? Si oui, alors oui, définissez l'élément source à la collection et vous devriez être bon d'aller.
OriginalL'auteur rlcrews
C'est probablement à la suite de quelques de la supercherie que le concepteur ne de rendre sans cesse de la compilation (comme sauter code-behind constructeurs). Essayez de déplacer votre collection à une catégorie distincte et utiliser une instance de ce que votre DataContext (comme un MVVM ViewModel). L'autre classe devrait être capable d'initialiser normalement et de fournir la propriété liée à la designer.
OriginalL'auteur John Bowen
Avez-vous essayé sans le DataContext de tags? À la fois dans la Zone de groupe et de la grille de données.
MODIFIER
quelque chose comme ceci:
Daniel, qui ne fonctionne pas. Sans un datacontext définie, l'obtenir sur ma propriété n'est pas appelé, ni t-il me permettre d'utiliser la fenêtre Propriétés pour modifier les colonnes.
OriginalL'auteur dcarneiro