Megosztás a következőn keresztül:


L2DBForm.xaml.cs forráskód

Ez a lap a C#-forráskód tartalmát és leírását tartalmazza a L2DBForm.xaml.csfájlban. Az ebben a fájlban található L2XDBForm részleges osztály három logikai szakaszra osztható: adattagokra, valamint a OnRemove és OnAddBook gombra kattintás eseménykezelőire.

Adattagok

Két privát adattag használatos az osztály hozzárendelésére az L2DBForm.xamláltal használt ablak erőforrásokhoz.

  • A myBooks névtérváltozó "http://www.mybooks.com"értékre van inicializálva.

  • A bookList tag inicializálódik a konstruktorban az L2DBForm.xaml fájl CDATA sztringjével a következő sorral:

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

OnAddBook eseménykezelő

Ez a módszer a következő három utasítást tartalmazza:

  • A rendszer az első feltételes utasítást használja a bemeneti ellenőrzéshez.

  • A második utasítás egy új XElement-t hoz létre az Új könyv hozzáadása felhasználói felület (UI) szakaszában megadott karakterlánc-értékekből.

  • Az utolsó utasítás hozzáadja ezt az új könyvelemet az adatszolgáltatóhoz L2DBForm.xaml. Következésképpen a dinamikus adatkötés automatikusan frissíti a felhasználói felületet ezzel az új elemgel; nincs szükség további felhasználó által megadott kódra.

OnRemove eseménykezelő

A OnRemove kezelő két okból bonyolultabb, mint a OnAddBook kezelő. Először is, mivel a nyers XML megőrzi az üres helyeket, a könyvbejegyzéssel megegyező új sorokat is el kell távolítani. Másodszor, kényelmi okokból a törölt elemen lévő kijelölés visszaáll a lista előző elemére.

A kijelölt könyvelem eltávolításának alapműve azonban csak két utasítással érhető el:

  • Először a listamezőben jelenleg kijelölt elemhez társított könyvelem lesz lekérve:

    XElement selBook = (XElement)lbBooks.SelectedItem;
    
  • Ezután a rendszer törli ezt az elemet az adatszolgáltatóból:

    selBook.Remove();
    

A dinamikus adatkötés biztosítja, hogy a program felhasználói felülete automatikusan frissüljön.

példa

Kód

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");
        }
    }
}

Megjegyzések

A kezelőkhöz társított XAML-forrásért lásd L2DBForm.xaml forráskód.

Lásd még