2010-10-20 1 views
2

Je viens de commencer à utiliser WPF et j'ai des problèmes de liaison de données à partir du résultat d'une requête Linq vers un ListView.Est-il possible de créer une base de données directement à partir d'un résultat de requête linq vers un contrôle?

J'ai essayé un certain nombre de combinaisons, y compris la définition de DataContext et ItemsSource à la requête. Comme dans:

listView.DataContext = (from person in People select person).ToList(); 

Ensuite, dans le XAML réglage du DisplayMemberBinding à {Reliure Nom} ou {Reliure/Name} etc.

Je ne suis pas inquiet pour sa mise à jour ou l'autre manière autre que juste en montrant une liste d'éléments de la requête à ce stade. Donc je suppose qu'il me manque quelques connaissances de base avec WPF, mais cette partie semble avoir une courbe d'apprentissage plutôt abrupte, donc peut-être un bon coup de pouce dans la bonne direction d'un exemple de code serait bon. Il semble que la plupart du code implique beaucoup de création d'affichages de données ou de notations de types de données ou au moins une liaison avec des objets locaux plutôt que directement à partir d'une requête.

Répondre

2

Essayez plutôt:

listView.ItemsSource = (from person in People select person).ToList(); 

[DataContext définit le contexte de liaison pour le contrôle et ses enfants. ItemsSource définit la collection utilisée pour générer le contenu des éléments du contrôle]

Vous pouvez aussi simplement.

listView.ItemsSource = People; 

exemple Fuller:

MainWindow.xaml:

<Window x:Class="WpfApplication2.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 
    <Grid> 
     <ListView x:Name="listView"> 
      <ListView.View> 
       <GridView> 
        <GridViewColumn DisplayMemberBinding="{Binding Name}"/> 
        <GridViewColumn DisplayMemberBinding="{Binding Age}"/> 
       </GridView> 
      </ListView.View> 
     </ListView> 
    </Grid> 
</Window> 

MainWindow.xaml.cs:

using System.Windows; 

namespace WpfApplication2 
{ 
    public partial class MainWindow : Window 
    { 
    public MainWindow() 
    { 
     InitializeComponent(); 

     var people = new[] { new { Name = "John", Age = 40 }, new { Name = "Bill", Age = 50 } }; 
     listView.ItemsSource = people; 
    } 
    } 
} 
+0

Merci, j'ai essayé à la fois DataContext et ItemsSource en vain. Je pense que mon XAML correspondant est le problème. Pour votre première réponse, que définiriez-vous DisplayMemberBinding à des colonnes? –

+0

DisplayMemberBinding doit être défini sur la propriété de votre classe Person (?) Que vous souhaitez afficher dans cette colonne. – lesscode

+0

Ma syntaxe est-elle correcte comme indiqué dans ma question: {Nom de liaison} etc? Parce que ça ne semble vraiment pas marcher pour moi. Je peux poster une version plus complète ce soir. –

Questions connexes