Partager via


code source L2DBForm.xaml.cs

Cette page contient le contenu et la description du code source C# dans le fichier L2DBForm.xaml.cs. La classe partielle L2XDBForm contenue dans ce fichier peut être divisée en trois sections logiques : les membres de données et les gestionnaires d'événements de clic sur les boutons OnRemove et OnAddBook.

Membres de données

Deux membres de données privées sont utilisés pour associer cette classe aux ressources de fenêtre utilisées dans L2DBForm.xaml.

  • La variable myBooks d’espace de noms est initialisée sur "http://www.mybooks.com".

  • Le membre bookList est initialisé dans le constructeur avec la chaîne CDATA de L2DBForm.xaml, en utilisant la ligne suivante :

    bookList = (XElement)((ObjectDataProvider)Resources["LoadedBooks"]).Data;
    

Gestionnaire d’événements OnAddBook

Cette méthode contient les trois instructions suivantes :

  • La première instruction conditionnelle est utilisée pour la validation d’entrée.

  • La deuxième instruction crée une nouvelle XElement valeur à partir des valeurs de chaîne que l’utilisateur a entrées dans la section Ajouter une interface utilisateur (IU) de New Book .

  • La dernière instruction ajoute ce nouvel élément de livre au fournisseur de données dans L2DBForm.xaml. Par conséquent, la liaison de données dynamiques met automatiquement à jour l’interface utilisateur avec ce nouvel élément ; aucun code supplémentaire fourni par l’utilisateur n’est requis.

Gestionnaire d’événements OnRemove

Le OnRemove gestionnaire est plus compliqué que le OnAddBook gestionnaire pour deux raisons. Tout d’abord, étant donné que le code XML brut contient des espaces blancs conservés, les nouvelles lignes correspondantes doivent également être supprimées avec l’entrée de livre. Deuxièmement, par souci de commodité, la sélection, qui était sur l’élément supprimé, est réinitialisée à la précédente dans la liste.

Toutefois, le travail principal de suppression de l’élément de livre sélectionné est effectué par deux instructions seulement :

  • Tout d’abord, l’élément de livre associé à l’élément actuellement sélectionné dans la zone de liste est récupéré :

    XElement selBook = (XElement)lbBooks.SelectedItem;
    
  • Ensuite, cet élément est supprimé du fournisseur de données :

    selBook.Remove();
    

Là encore, la liaison de données dynamique garantit que l’interface utilisateur du programme est automatiquement mise à jour.

Exemple :

Code

using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Input;
using System.Xml;
using System.Xml.Linq;

namespace LinqToXmlDataBinding {
    /// <summary>
    /// Interaction logic for L2XDBForm.xaml
    /// </summary>

    public partial class L2XDBForm : System.Windows.Window
    {
        XNamespace mybooks = "http://www.mybooks.com";
        XElement bookList;

        public L2XDBForm()
        {
            InitializeComponent();
            bookList = (XElement)((ObjectDataProvider)Resources["LoadedBooks"]).Data;
        }

        void OnRemoveBook(object sender, EventArgs e)
        {
            int index = lbBooks.SelectedIndex;
            if (index < 0) return;

            XElement selBook = (XElement)lbBooks.SelectedItem;
            //Get next node before removing element.
            XNode nextNode = selBook.NextNode;
            selBook.Remove();

            //Remove any matching newline node.
            if (nextNode != null && nextNode.ToString().Trim().Equals(""))
            { nextNode.Remove(); }

            //Set selected item.
            if (lbBooks.Items.Count > 0)
            {  lbBooks.SelectedItem = lbBooks.Items[index > 0 ? index - 1 : 0]; }
        }

        void OnAddBook(object sender, EventArgs e)
        {
            if (String.IsNullOrEmpty(tbAddID.Text) ||
                String.IsNullOrEmpty(tbAddValue.Text))
            {
                MessageBox.Show("Please supply both a Book ID and a Value!", "Entry Error!");
                return;
            }
            XElement newBook = new XElement(
                                mybooks + "book",
                                new XAttribute("id", tbAddID.Text),
                                tbAddValue.Text);
            bookList.Add("  ", newBook, "\r\n");
        }
    }
}

Commentaires

Pour obtenir la source XAML associée pour ces gestionnaires, consultez le code source L2DBForm.xaml.

Voir aussi