2009-12-04 6 views
1

J'implémente une grille de données WPFToolkit et je veux la lier à sa source. Actuellement, je le fais par programmation dans le code-behind en liant les résultats de la requête à ItemsSource. Cependant, cela n'est pas assez efficace, car je veux pouvoir sélectionner les colonnes à afficher et aussi renommer les en-têtes, pour lesquels j'ai besoin d'une liaison pour chaque section de dataagridtextcolumn.Comment connecter WPFToolkit DataGrid à une source de requête de recherche en code-behind

J'apprécierai toutes les idées. Merci d'avance!

Répondre

2

Vous pouvez également définir les liaisons de chaque colonne dans le code-behind.

Voici un DataGrid exemple avec des colonnes manuellement définies avec le texte d'en-tête personnalisé:

<toolkit:DataGrid x:Name="dataGrid" AutoGenerateColumns="False"> 
     <toolkit:DataGrid.Columns> 
      <toolkit:DataGridTextColumn x:Name="column1" Header="My Header" /> 
      <toolkit:DataGridTextColumn x:Name="column2" Header="Another Header" /> 
      <toolkit:DataGridTextColumn x:Name="column3" Header="Third Header" /> 
     </toolkit:DataGrid.Columns> 
    </toolkit:DataGrid> 

Et voici un code-behind qui lie chaque colonne à une propriété de la collection qui est configuré pour être le ItemsSource :

this.dataGrid.ItemsSource = this.testCollection; // replace with your collection 
this.column1.Binding = new Binding("Property1"); // replace with your property names 
this.column2.Binding = new Binding("Property2"); 
this.column3.Binding = new Binding("Property3"); 

vous pouvez modifier le texte d'en-tête et de la visibilité dans le code si vous le souhaitez:

this.column1.Header = "New Header"; 
this.column2.Visibility = System.Windows.Visibility.Collapsed; 

J'utilise simplement une classe de test simple, Prop, avec quelques propriétés de chaîne.

public class Prop 
{ 
    public string Property1 { get; set; } 
    public string Property2 { get; set; } 
    public string Property3 { get; set; } 

    public Prop(string p1, string p2, string p3) 
    { 
     this.Property1 = p1; 
     this.Property2 = p2; 
     this.Property3 = p3; 
    } 
} 
+0

Que vous. Je n'ai pas utilisé exactement cela, mais cela m'a édité à l'idée. Assistance opportune, mec :) – Branimir