Liaison de données à une grille de données en WPF avec Entity Framework
J'ai regardé sur le web pour cela, et rien de ce que j'ai trouvé semble aider.
J'ai fait un modèle et ajouté le modèle à une source de données comme un objet. Je suppose qu'il pourrait fonctionner comme un ensemble de données où je peux simplement faire glisser et déposer sur un formulaire et il serait de lier les données pour moi. Mais il continue de s'afficher en blanc quand j'ai glisser-déposer à partir du modèle. alors j'ai regardé en ligne et vu que certains code-behind a été nécessaire, et c'est ce que j'ai et elle est toujours vierge. Les idées de ce que Im faire de mal?
public partial class form1: Window
{
ComEntities context;;
public form1()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
context = new ComEntities();
System.Windows.Data.CollectionViewSource comEntitiesViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("comEntitiesViewSource")));
var permits = (from c in context.tBLPER.Local select c);
this.DataContext = context.tBLPER.Local;
tBLPERDataGrid.ItemsSource = context.tBLPER.Local;
}
}
XAML:
<DataGrid x:Name="tBLPERDataGrid" RowDetailsVisibilityMode="VisibleWhenSelected" Margin="10,10,10,413" ItemsSource="{Binding}" EnableRowVirtualization="True" AutoGenerateColumns="False">
</DataGrid>
OriginalL'auteur Gisiota | 2015-07-10
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin pour concrétiser votre requête (les données de la mémoire). Vous pouvez faire appel de la
ToList()
méthode, mais encore mieux, c'est cela:Local
propriété obtient uneObservableCollection<T>
qui représente une vue locale de tous lesAdded
,Unchanged
, etModified
entités dans cet ensemble. Cette vue locale permettra de rester connecté en tant qu'entités sont ajoutées ou supprimées à partir du contexte. De même, les entités sont ajoutés ou retirés de la vue locale seront automatiquement ajoutés ou supprimés à partir du contexte.Dans le cas où vous avez besoin de filtrer vos données avant (à supposer que votre entité possède une propriété nommée
Age
et souhaitez que les utilisateurs âgés de plus de 20), alors vous pouvez faire ceci:Une autre chose, si vous souhaitez définir la
ItemSource
propriété de votre Grille dans le code-behind de votre fenêtre, il n'est pas judicieux de créer une liaison à la propriété dans votre code xaml, donc l'enlever:Si vous allez faire ceci:
désolé, j'ai eu une erreur de typo, j'ai édité ma réponse
Pas de soucis, merci à tous pour votre aide. Je me sens stupide, le contrôle datagrid affiche maintenant les types de champs (tels que la date du sélecteur de zone de texte et, avant il était tout simplement vide), mais les données n'est toujours pas présent. Je pense que cela a à voir avec ma requête, je n'ai jamais utiliser la variable permet n'importe où et ne sais pas comment lier si Im faire le contexte.tblper.méthode local. J'ai mis à jour mon window_loaded code avec ce que j'ai actuellement.
Êtes-vous sûrs que vous avez données dans cette table? De deux choses, vous n'êtes pas à l'appel de la
Load()
méthode et vous n'avez pas à définir laDataContext
et laItemSource
en même temps, en choisir un, si vous choisissez de régler laItemSource
de votre grille, puis de les supprimerItemsSource="{Binding}"
à partir de votre code xaml.Merci à tous pour votre aide! Je n'ai pas de chargement. J'avais besoin de faire référence dans le code (à l'aide du projet.modèle). Id aiment à se lier ces données à l'aide de seulement XAML, est-il de la littérature ou des sites que vous recommander de lire?
OriginalL'auteur octavioccl
Vous ne devriez pas être la mise en
ItemsSource
deux fois (il suffit de le mettre dans votre code derrière - supprimerItemsSource="{Binding}"
).Aussi, vous devez définir
AutoGenerateColumns="True"
parce que sans cela, vous devez ajouterDataGrid
XColumn
éléments de laDataGrid
.Jetez un oeil ici pour plus de détails ... http://www.wpf-tutorial.com/datagrid-control/custom-columns/
Vous pouvez également mettre un point d'arrêt sur la
tBLPERDataGrid.ItemsSource = permits;
ligne de sorte que vous pouvez inspecterpermits
pour confirmer qu'il contient les données que vous attendez.OriginalL'auteur 3-14159265358979323846264
Si vous définissez AutoGenerateColumns="False", vous devez fournir les colonnes de définition sur XAML ou un ensemble AutoGenerateColumns="True". C'est la première chose à faire.
OriginalL'auteur Murilo
Si Vous souhaitez utiliser le Modèle (également
ItemsSource="{Binding}"
est un indice pour moi, que Vous voulez), que de ne pas coder en dur le ItemsSource. Vous créez le Modèle de l'objet dans unCEntities context;
variable, mais Vous devez le régler à laDataContext
propriété de la Fenêtre comme ceci:et supprimer la ligne
Maintenant la ItemsSource est à venir à partir de la
CEntities
instance.OriginalL'auteur ntohl