Sortie de la version 0.4 de Dvp.NET
La version 0.4 de la librairie Dvp.NET est disponible !
http://dvp-net.developpez.com/images/logo-dvp.net.png
La version précédente était déjà riche en nouvelles fonctionnalités, celle-ci l'est encore plus ! Vous trouverez ci-dessous la liste des changements apportés par cette version.
Encore une fois, il y a quelques "breaking changes" (et oui, ça reste une beta pour l'instant...), qui sont indiqués en rouge. A noter : l'assembly Developpez.Dotnet.Web a été purement et simplement supprimé : son maigre contenu (une classe avec une méthode pas très utile) ne justifiait pas qu'on le conserve. Il sera réintroduit plus tard si on a des choses utiles à mettre dedans.
- Assembly Developpez.Dotnet
- Classe CoreExtensions (méthodes d’extension multi-usage)
- Classe DataExtensions : méthodes d’extension pour l’accès aux données avec ADO.NET
- http://dvp-net.developpez.com/images/new.png Méthode CreateConnection : raccourci pour créer une connexion à partir d’un DbProviderFactory en spécifiant la chaine de connexion
- http://dvp-net.developpez.com/images/new.png Méthode ToDataTable : convertit une collection d’objets en DataTable
- http://dvp-net.developpez.com/images/new.png Méthode Sort : trie une DataTable selon la colonne spécifiée
- http://dvp-net.developpez.com/images/new.png Méthode GetData : obtient un DataReader imbriqué pour la colonne spécifiée (équivalent à IDataRecord.GetData, mais accepte le nom de la colonne plutôt que sa position)
- http://dvp-net.developpez.com/images/new.png Méthode Select : exécute une commande et effectue une projection du résultat en une séquence d’objets. Peut être utilisé directement avec la syntaxe de requête Linq :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| using (var command = connection.CreateCommand("SELECT * FROM Person"))
{
var results =
from record in command
select new
{
Id = record.GetGuid("Id"),
LastName = record.GetString("LastName"),
DateOfBirth = record.Field<DateTime?>("DateOfBirth"),
LuckyNumber = record.Field<int?>("LuckyNumber")
};
foreach(var person in results) ...
} |
- http://dvp-net.developpez.com/images/new.png Méthode SaveAsCsv : enregistre une DataTable dans un fichier ou un flux au format CSV
- http://dvp-net.developpez.com/images/new.png Méthode ToCsv : renvoie une chaine contenant la représentation CSV d’une DataTable
- Modifié certaines méthodes pour étendre les interfaces (IDbConnection, IDbCommand, etc) plutôt que les classes abstraites (DbConnection, DbCommand, etc)
- Classe EnumerableExtensions (méthodes d’extension pour Linq to Objects et les collections)
- http://dvp-net.developpez.com/images/new.png Méthode GetElementType : obtient le type des éléments d’une séquence (utile lorsqu’on travaille avec des types anonymes)
- http://dvp-net.developpez.com/images/new.png Méthode CommonPrefix : obtient le plus long préfixe commun de deux séquences
- http://dvp-net.developpez.com/images/new.png Méthode Max : comme Enumerable.Max, mais permet de spécifier un IComparer
- http://dvp-net.developpez.com/images/new.png Méthode ExceptBy : comme Enumerable.Except, mais permet de spécifier la clé de comparaison des éléments
- http://dvp-net.developpez.com/images/new.png Méthode IntersectBy : comme Enumerable.Intersect, mais permet de spécifier la clé de comparaison des éléments
- Renommé Distinct en DistinctBy, par souci de cohérence
- Renommé WithMin/WithMax en MinBy/MaxBy, par souci de cohérence
- Les méthodes suivantes ont été déplacées vers ArrayExtensions :
- GetSegment
- AsEnumerable(ArraySegment)
- ToArray(ArraySegment)
- ShiftRight/ShiftLeft
- RotateRight/RotateLeft
(breaking change au niveau binaire, mais pas au niveau source, dans la mesure où ce sont des méthodes d'extensions et où elles restent dans le même namespace)
- Classe CompareExtensions (méthodes d'extensions pour les comparaisons et comparateurs)
- http://dvp-net.developpez.com/images/new.png Classe XmlExtensions (méthodes d’extension pour faciliter l’écriture de requêtes Linq to XML)
- Méthode SafeValue : renvoie la valeur d'un élément (ou attribut) XML s'il n'est pas null, ou null si l'élément (ou attribut) est null.
- Méthode SafeElement : renvoie le premier élément enfant du conteneur avec le nom spécifié, ou null si le conteneur est null.
- Méthode SafeElements : renvoie une collection des éléments enfants d’un conteneur, ou une séquence vide si le conteneur est null.
- Méthode SafeAttribute : renvoie l'attribut avec le nom spécifié, ou null si l'élement est null.
- Méthode SafeAttributes : renvoie une collection des attributs de cet élément, ou une séquence vide si l'élément est null.
- Classe ReflectionExtensions (méthodes d’extension pour l’utilisation de la réflexion)
- Classe StreamExtensions (méthodes d’extensions pour la manipulation de flux binaires)
- http://dvp-net.developpez.com/images/new.png Méthode ReadAllBytes : lit tout le contenu du flux et le renvoie sous forme de tableau d’octets
- http://dvp-net.developpez.com/images/new.png Méthode ReadBytes : lit le nombre d’octets spécifié à partir du flux et les renvoie sous forme de tableau d’octets (bloque jusqu’à ce que le nombre d’octets demandé ait été lu, ou que la fin du flux soit atteinte, contrairement à Stream.Read)
- Renommé CopyToStream en CopyTo pour être cohérent avec la méthode qui existe dans .NET 4
- Nouvelles surcharges de CopyTo/CopyToFile pour spécifier la taille du buffer
- Classe DateExtensions (méthodes d’extensions pour la manipulation de dates)
- Classe StringExtensions (méthodes d’extension pour la manipulation de chaines de caractères)
- http://dvp-net.developpez.com/images/new.png Classe ArrayExtensions (méthodes d’extension pour la manipulation de tableaux)
- Méthode GetRows : transforme un tableau à 2 dimensions en une séquence de tableaux à une dimension
- Méthode ToJaggedArray : transforme un tableau à 2 dimensions en tableau en escalier (tableau de tableaux)
- Méthode ToBidimensionalArray : transforme un tableau en escalier (tableau de tableaux) en tableau à 2 dimensions
- Méthodes déplacées depuis EnumerableExtensions :
- GetSegment (déplacé depuis EnumerableExtensions)
- AsEnumerable(ArraySegment)
- ToArray(ArraySegment)
- ShiftRight/ShiftLeft
- RotateRight/RotateLeft
- Classe NumberConverter (conversion de nombres en toutes lettres)
- Modification de SpellAmount pour permettre un contrôle plus fin de la devise. Les devises les plus courantes (euro, dollar, livre) sont prédéfinies
- http://dvp-net.developpez.com/images/new.png Améliorations pour permettre le support de plusieurs langues (pour l’instant seul le français est implémenté, l’anglais est prévu…)
- http://dvp-net.developpez.com/images/new.png Conversions d’unités de mesure :
- Longueur : mètre, pied, pouce, mile, mille marin
- Surface : mètre carré, pied carré, pouce carré, acre, are, hectare
- Volume : mètre cube, litre, pinte, gallon, gallon US, once liquide, once liquide US
- Masse : kilogramme, livre, once
- Température : Kelvin, Celsius, Fahrenheit
- Angle : radian, degré, grade
Exemple :
Code:
1 2 3 4 5 6 7
| Celsius temp = 25;
Fahrenheit tempF = temp.ToFahrenheit();
Console.WriteLine ("La température est de {0:G2}", temp);
Console.WriteLine ("The temperature is {0:G2}", tempF);
// Affiche :
// La température est de 25 °C
// The temperature is 77 °F |
- http://dvp-net.developpez.com/images/new.png Classe VirtualizingCollection<T> : collection abstraite qui implémente la virtualisation de données. Utile pour afficher une grande quantité de données dans une interface graphique sans tout charger en mémoire.
- http://dvp-net.developpez.com/images/new.png Classe QueueSet<T> : implémente une file où chaque élément ne peut être présent qu’une fois. Si un élément ajouté est déjà présent, il est replacé en bout de file
- http://dvp-net.developpez.com/images/new.png Classe StackSet<T> : implémente une pile où chaque élément ne peut être présent qu’une fois. Si un élément ajouté est déjà présent, il est replacé sur le dessus de la pile
- http://dvp-net.developpez.com/images/new.png Classe ByteSizeFormatter : formate une taille en octets de façon lisible pour l'utilisateur. De nombreuses options sont disponibles pour personnaliser le formatage (unité minimum/maximum, préfixes binaires ou décimaux, usage traditionnel ou conforme aux standards, format numérique...)
- Assembly Developpez.Dotnet.Drawing (GDI)
- Classe BitmapExtensions (méthodes d’extension pour la manipulation d’images bitmap GDI)
- Assembly Developpez.Dotnet.Windows (WPF)
- http://dvp-net.developpez.com/images/new.png Classe DispatcherExtensions : méthodes d’extension pour le Dispatcher
- Méthode InvokeIfRequired : exécute une action sur le thread du Dispatcher, en utilisant Invoke si nécessaire.
- http://dvp-net.developpez.com/images/new.png Classe FrameworkElementExtensions : méthodes d’extension pour les FrameworkElements
- Méthode DoWhenLoaded : exécute une action sur l’élément quand il est chargé, ou immédiatement s’il est déjà chargé
- http://dvp-net.developpez.com/images/new.png Classe ImageBehavior : comportements pour les contrôles Image
- Propriété attachée AnimatedSource : permet d’afficher une image GIF animée dans un contrôle Image
Code:
<Image dvp:ImageBehavior.AnimatedSource="Images/loading.gif" />
- Classe TextBoxBehavior : comportements pour les contrôles TextBox
- http://dvp-net.developpez.com/images/new.png Propriété attachée SelectAllOnFocus : sélectionne automatiquement tout le texte quand la TextBox prend le focus
- http://dvp-net.developpez.com/images/new.png Propriété attachée NumericOnly : indique que la TextBox n’accepte que des nombres. On peut autoriser ou non les nombres décimaux
Code:
1 2 3
| <TextBox Text="{Binding Age}"
dvp:TextBoxBehavior.NumericOnly="True"
dvp:TextBoxBehavior.AllowDecimal="False" /> |
- http://dvp-net.developpez.com/images/new.png Classe TreeViewBehavior : comportements pour les contrôles TreeView
- Propriété attachée SelectedItem (+ propriétés associées) : permet de binder l’élément sélectionné d’un TreeView, pour l'utilisation du TreeView en MVVM
Code:
1 2 3 4 5 6 7 8 9 10
| <TreeView ItemsSource="{Binding Nodes}"
dvp:TreeViewBehavior.TrackSelectedItem="True"
dvp:TreeViewBehavior.SelectedItem="{Binding SelectedNode}"
dvp:TreeViewBehavior.IsSelectedPath="IsNodeSelected">
<TreeView.ItemContainerStyle>
<Style TargetType="TreeViewItem">
<Setter Property="IsSelected" Value="{Binding IsNodeSelected}" />
</Style>
</TreeView.ItemContainerStyle>
... |
- http://dvp-net.developpez.com/images/new.png Classe FocusBehavior : comportements pour contrôler le focus
- Propriété attachée FocusOnLoad : indique qu’un élément prend le focus dès qu’il est chargé
- http://dvp-net.developpez.com/images/new.png Classe AutoCompleteBehavior : comportements pour activer l’autocomplétion sur des TextBox
- Propriété attachée ItemsSource : indique la source des éléments de l’autocomplétion
- + autres propriétés pour personnaliser le comportement et l'apparence
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| <TextBox Width="120" VerticalAlignment="Center"
dvp:AutoCompleteBehavior.ItemsSource="{Binding Countries}"
dvp:AutoCompleteBehavior.SearchMemberPath="EnglishName"
dvp:AutoCompleteBehavior.ComparisonType="InvariantIgnoreCase"
dvp:AutoCompleteBehavior.MatchMode="StartsWith"
dvp:AutoCompleteBehavior.Suggest="True">
<dvp:AutoCompleteBehavior.ItemTemplate>
<DataTemplate>
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0} ({1})">
<Binding Path="DisplayName" />
<Binding Path="EnglishName" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
</dvp:AutoCompleteBehavior.ItemTemplate>
</TextBox> |
- http://dvp-net.developpez.com/images/new.png Classe BindingProxy : classe permettant le binding dans des situations où le DataContext n’est pas directement accessible. Voir cet article pour plus de détails
- http://dvp-net.developpez.com/images/new.png Classe MouseWheelGesture : définit un mouvement de la molette de la souris, pour l’utilisation dans un InputBinding. Cela permet de pallier un manque de MouseGesture, qui permet déjà de gérer un mouvement de la molette, mais sans préciser lequel...
- http://dvp-net.developpez.com/images/new.png Contrôle IPAddressBox : contrôle permettant l’édition d’une adresse IPv4
http://www.developpez.net/forums/att...1&d=1302039826
Le binding est évidemment supporté, et un évènement routé AddressChanged est disponible
- http://dvp-net.developpez.com/images/new.png Contrôle RatingControl : contrôle permettant de saisir visuellement une note entre 1 et 5.
- Il est possible de personnaliser les images à utiliser :
- 3 modes de notation sont supportés :
- Integer : note arrondie à l'entier
- HalfPoint : note arrondie au demi-point
- Decimal : note non arrondie
- Bien sûr, la valeur peut être liée par un binding, et un évènement ValueChanged est disponible pour signaler les modifications
- Assembly Developpez.Dotnet.Web (ASP.NET) : supprimé
J'espère que toutes ces nouveautés vous seront utiles ! N'hésitez pas à nous suggérer des nouveautés et à signaler les bugs sur le gestionnaire de projet ;)