En savoir plus sur Xceed DataGrid pour WPF
Bienvenue dans cette nouvelle série. Cette fois-ci, nous allons nous pencher sur la grille de données Xceed DataGrid pour WPF.
Nous commencerons doucement avec les bases, puis nous couvrirons différents sujets et fonctionnalités pour apprendre à tirer le meilleur parti de la grille de données dans vos projets.
Configuration initiale
Commençons par créer un nouveau projet d'application WPF et ajoutons les références aux assemblages dont nous aurons besoin.
Il existe des assemblages pour les ThemePacks et pour les vues 3D, mais nous les garderons pour plus tard.
Pour l'instant, nous n'ajouterons que les assemblages suivants :
- Xeed DataGrid pour WPF
- Contrôles Xceed pour WPF
- Xceed.Wpf.DataGrid.Samples.SampleData
Cartographie de l'espace de noms
Une fois les assemblages ajoutés à notre nouveau projet, les namespace maps à utiliser doivent être déclarés.
Dans XAML, cela se fait à l'aide de l'attribut xmlns :
xmlns:xcdg="http://schemas.xceed.com/wpf/xaml/datagrid"
Remarque : si le contrôle DataGridControl a été ajouté à une surface de conception, l'attribut xmlns est automatiquement ajouté.
La collection de schémas pour Xceed DataGrid for WPF contient de nombreux espaces de noms. Utilisation peuvent être utilisées pour créer des alias pour les espaces de noms que nous voulons utiliser dans notre projet.
using Xceed.Wpf.DataGrid;
using Xceed.Wpf.DataGrid.Converters;
using Xceed.Wpf.DataGrid.Print;
using Xceed.Wpf.DataGrid.Stats;
using Xceed.Wpf.DataGrid.ValidationRules;
using Xceed.Wpf.DataGrid.Views;
using Xceed.Wpf.DataGrid.Views.Surfaces;
using Xceed.Wpf.Controls;
using Xceed.Wpf.DataGrid.ThemePack;
using Xceed.Wpf.DataGrid.Settings;
using Xceed.Wpf.DataGrid.Export;
Reliure
Enfin, nous ajouterons une grille à notre page ou fenêtre. Les exemples présentés dans la documentation placent généralement la grille à l'intérieur d'une fenêtre de type Grille, comme démontré ci-dessous.
Exemple 1 : comment créer une connexion à la version Access de la base de données Northwind et créer une propriété nommée "Orders" à laquelle la grille sera liée.
using System.Data.OleDb;
using System.Data;
static App()
{
DataSet dataSet = new DataSet();
string mdbFile = @"DataNorthwind.mdb";
string connString = String.Format( "Provider=Microsoft.ACE.OLEDB.12.0; Data Source={0}", mdbFile );
OleDbConnection conn = new OleDbConnection( connString );
OleDbDataAdapter adapter = new OleDbDataAdapter();
adapter.SelectCommand = new OleDbCommand( "SELECT * FROM Orders;", conn );
adapter.Fill( dataSet, "Orders" );
m_orders = dataSet.Tables[ "Orders" ];
}
public static DataTable Orders
{
get
{
return m_orders;
}
}
private static DataTable m_orders;
Exemple 2 : comment lier une grille à la table Orders, qui est récupérée par le biais de la propriété Orders mise en œuvre dans le code ci-dessus.
<Grid xmlns:xcdg="http://schemas.xceed.com/wpf/xaml/datagrid">
<Grid.Resources>
<xcdg:DataGridCollectionViewSource x:Key="cvs_orders"
Source="{Binding Source={x:Static Application.Current},
Path=Orders}"/>
</Grid.Resources>
<xcdg:DataGridControl x:Name="OrdersGrid"
ItemsSource="{Binding Source={StaticResource cvs_orders}}"/>
</Grid>
dataGridControl.ItemsSource = new DataGridCollectionView( App.Orders.DefaultView );
Par défaut, une grille prend toute la place dont elle a besoin ; par conséquent, si elle n'est pas soumise à une contrainte de taille, comme lorsqu'elle est placée dans une StackPanel, et qu'un grand nombre d'éléments de données sont présents, la virtualisation de l'interface utilisateur sera perdue, ce qui entraînera une perte de performance significative.
Pour préserver la virtualisation de l'interface utilisateur lorsqu'une grille est en mode StackPanel, les Largeur maximale et MaxHeight (ou Largeur et Hauteur) doit être utilisé pour contraindre la grille. En guise d'alternative, un DockPanel ou Grille peuvent être utilisés car ils imposent tous deux des contraintes de taille à leurs éléments enfants.
Licences
La dernière étape consiste à accorder une licence à Xceed DataGrid for WPF en définissant le paramètre Clé de licence propriété.
Il existe deux scénarios possibles en matière d'octroi de licences :
- Utilisation du mode essai.
- Toutes les fonctionnalités sont disponibles et peuvent être évaluées pendant la période d'essai, après quoi une exception sera levée. Pour utiliser ce mode, aucune clé de licence n'est nécessaire.
- Octroi d'une licence au composant avec une clé autre que celle de l'essai (commence par DGP)
- Les clés de licence du produit déverrouillent en permanence l'ensemble des fonctionnalités du composant.
Note : la version de la clé de licence doit correspondre à la version des assemblages.
Le Clé de licence de la propriété Licencié doit contenir une clé de licence valide avant que toute autre méthode du composant Xceed ne soit appelée. Si une clé de licence non valide ou une clé d'essai expirée est utilisée, ou si la licence est placée au mauvais endroit dans le code, une exception sera levée au moment de l'exécution.
Il est recommandé que le Clé de licence doit être définie à l'un des endroits suivants :
- L'emplacement préféré pour définir la propriété LicenseKey est la méthode Application.OnSatartup.
- La propriété LicenseKey peut également être définie dans les événements Window.Loaded ou Page.Loaded, à condition que la page ou la fenêtre de démarrage soit connue et invariable.
Réglage de la Clé de licence de la propriété Licencié définie dans l'assembly Xceed.Wpf.DataGrid accordera automatiquement une licence aux classes de l'assembly Xceed.Wpf.Controls.
Le code suivant montre comment définir l'option Clé de licence dans la surcharge de la méthode Application.OnStartup.
protected override void OnStartup( StartupEventArgs e )
{
Xceed.Wpf.DataGrid.Licenser.LicenseKey = "DGP70-xxxxx-xxxxx-xxxx";
base.OnStartup( e );
}
Exemple
Bien qu'il soit possible de spécifier quelles propriétés d'éléments de la source de données doivent être incluses et quelles colonnes doivent être affichées, nous examinerons ces options plus tard. Pour cet exemple, nous laisserons la grille charger automatiquement toutes les propriétés d'éléments trouvées dans la source de données et créer toutes les colonnes correspondantes dans la grille de données.
<Window.Resources>
<xcdg:DataGridCollectionViewSource x:Key="mySource"
AutoCreateItemProperties="True"
Source="{Binding Source={x:Static Application.Current}, Path=RecordData}" />
</Window.Resources>
<Grid>
<xcdg:DataGridControl x:Name="myGrid"
AutoCreateColumns="True"
ItemsSource="{Binding Source={StaticResource mySource}}" >
</xcdg:DataGridControl>
</Grid>
Note : les deux Propriétés de l'élément AutoCreateItem propriété sur DataGridCollectionViewSource, et le Création automatique de colonnes propriété sur DataGridControl, sont vrai par défaut. S'ils n'avaient pas été spécifiés, le résultat final aurait été le même.
Pour plus d'informations, veuillez vous référer à la la documentation.