İzlenecek yol: İçerik denetimlerini özel XML bölümlerine bağlama

Bu kılavuzda, Word'ün belge düzeyindeki özelleştirmesindeki içerik denetimlerini belgede depolanan XML verilerine bağlama işlemi gösterilmektedir.

Şunlar için geçerlidir: Bu konudaki bilgiler Word için belge düzeyi projeleri için geçerlidir. Daha fazla bilgi için bkz. Office uygulaması ve proje türüne göre kullanılabilen özellikler.

Word, özel XML bölümleri adlı XML verilerini belgede depolamanızı sağlar. İçerik denetimlerini özel xml bölümündeki öğelere bağlayarak bu verilerin görüntülenmesini denetleyebilirsiniz. Bu kılavuzdaki örnek belgede, özel xml bölümünde depolanan çalışan bilgileri görüntülenir. Belgeyi açtığınızda, içerik denetimleri XML öğelerinin değerlerini görüntüler. İçerik denetimlerindeki metinde yaptığınız tüm değişiklikler özel XML bölümüne kaydedilir.

Bu izlenecek yol aşağıdaki görevleri gösterir:

  • Tasarım zamanında belge düzeyindeki bir projede Word belgesine içerik denetimleri ekleme.

  • İçerik denetimlerine bağlanacak öğeleri tanımlayan bir XML veri dosyası ve XML şeması oluşturma.

  • XML şemasını tasarım zamanında belgeye ekleme.

  • XML dosyasının içeriğini çalışma zamanında belgedeki özel bir XML bölümüne ekleme.

  • İçerik denetimlerini özel XML bölümündeki öğelere bağlama.

  • A'yı DropDownListContentControl XML şemasında tanımlanan bir değer kümesine bağlama.

    Not

    Bilgisayarınız, aşağıdaki yönergelerde yer alan Visual Studio kullanıcı arabirimi öğelerinden bazıları için farklı adlar veya konumlar gösterebilir. Sahip olduğunuz Visual Studio sürümü ve kullandığınız ayarlar bu öğeleri belirler. Daha fazla bilgi için bkz . IDE'yi kişiselleştirme.

Önkoşullar

Bu izlenecek yolu tamamlamak için aşağıdaki bileşenlere ihtiyacınız vardır:

  • Microsoft Office geliştirici araçlarını içeren bir Visual Studio sürümü. Daha fazla bilgi için bkz . Office çözümleri geliştirmek için bilgisayar yapılandırma.

  • Microsoft Word.

Yeni bir Word belge projesi oluşturma

İzlenecek yolda kullanacağınız bir Word belgesi oluşturun.

Yeni bir Word belge projesi oluşturmak için

  1. EmployeeControls adlı bir Word belgesi projesi oluşturun. Çözüm için yeni bir belge oluşturun. Daha fazla bilgi için bkz . Nasıl yapılır: Visual Studio'da Office projeleri oluşturma.

    Visual Studio yeni Word belgesini tasarımcıda açar ve EmployeeControls projesini Çözüm Gezgini ekler.

Belgeye içerik denetimleri ekleme

Kullanıcının bir çalışan hakkındaki bilgileri görüntüleyebileceği veya düzenleyebileceği üç farklı içerik denetimi türü içeren bir tablo oluşturun.

Belgeye içerik denetimleri eklemek için

  1. Visual Studio tasarımcısında barındırılan Word belgesinde, Şeritte Ekle sekmesini seçin.

  2. Tablolar grubunda Tablo'ya tıklayın ve 2 sütun ve 3 satır içeren bir tablo ekleyin.

  3. aşağıdaki sütuna benzemesi için ilk sütuna metin yazın:

    Çalışan Adı
    İşe Alma Tarihi
    Başlık
  4. Tablonun ikinci sütununda ilk satırı seçin (Çalışan Adı'nın yanında).

  5. Şeritte Geliştirici sekmesini seçin.

    Not

    Geliştirici sekmesi görünmüyorsa, önce bunu göstermeniz gerekir. Daha fazla bilgi için bkz . Nasıl yapılır: Şeritte geliştirici sekmesini gösterme.

  6. Denetimler grubunda, ilk hücreye eklemek PlainTextContentControl için Metin düğmesini PlainTextContentControl seçin.

  7. Tablonun ikinci sütununda ikinci satırı seçin (İşe Alma Tarihi'nin yanında).

  8. Denetimler grubunda, ikinci hücreye eklemek DatePickerContentControl için Tarih Seçici düğmesini DatePickerContentControl seçin.

  9. Tablonun ikinci sütununda üçüncü satırı (Başlık'ın yanında) seçin.

  10. Denetimler grubunda, son hücreye eklemek DropDownListContentControl için Açılan Liste düğmesini DropDownListContentControl seçin.

    Bu, bu projenin tüm kullanıcı arabirimidir. Projeyi şimdi çalıştırırsanız, ilk satıra metin yazabilir ve ikinci satırda bir tarih seçebilirsiniz. Sonraki adım, görüntülemek istediğiniz verileri bir XML dosyasında belgeye eklemektir.

XML veri dosyasını oluşturma

Normalde, dosya veya veritabanı gibi bir dış kaynaktan özel XML bölümünde depolanacak XML verilerini alırsınız. Bu kılavuzda, belgedeki içerik denetimlerine bağlayacağınız öğelerle işaretlenmiş çalışan verilerini içeren bir XML dosyası oluşturursunuz. Verileri çalışma zamanında kullanılabilir hale getirmek için XML dosyasını özelleştirme derlemesine kaynak olarak ekleyin.

Veri dosyasını oluşturmak için

  1. Proje menüsünde Yeni Öğe Ekle'yi seçin.

    Yeni Öğe Ekle iletişim kutusu görünür.

  2. Şablonlar bölmesinde XML Dosyası'nı seçin.

  3. Dosyayı employees.xml olarak adlandırın ve ekle düğmesini seçin.

    employees.xml dosyası Kod Düzenleyicisi'nde açılır.

  4. employees.xml dosyasının içeriğini aşağıdaki metinle değiştirin.

    <?xml version="1.0" encoding="utf-8" ?>
    <employees xmlns="http://schemas.microsoft.com/vsto/samples">
      <employee>
        <name>Karina Leal</name>
        <hireDate>1999-04-01</hireDate>
        <title>Manager</title>
      </employee>
    </employees>
    
  5. Çözüm Gezgini'da employees.xml dosyasını seçin.

  6. Özellikler penceresinde Derleme Eylemi özelliğini seçin ve değeri Ekli Kaynak olarak değiştirin.

    Bu adım, projeyi oluştururken XML dosyasını derlemeye kaynak olarak ekler. Bu, XML dosyasının içeriğine çalışma zamanında erişmenizi sağlar.

XML Şeması Oluşturma

İçerik denetimini özel xml bölümündeki tek bir öğeye bağlamak istiyorsanız, XML şeması kullanmanız gerekmez. Ancak, öğesini bir değer kümesine bağlamak DropDownListContentControl için, daha önce oluşturduğunuz XML veri dosyasını doğrulayan bir XML şeması oluşturmanız gerekir. XML şeması, öğesi için title olası değerleri tanımlar. bu kılavuzun DropDownListContentControl ilerleyen bölümlerinde öğesini bu öğeye bağlayacaksınız.

XML şeması oluşturmak için

  1. Proje menüsünde Yeni Öğe Ekle'yi seçin.

    Yeni Öğe Ekle iletişim kutusu görünür.

  2. Şablonlar bölmesinde XML Şeması'nı seçin.

  3. Şemaya employees.xsd adını verin ve Ekle düğmesini seçin.

    Şema tasarımcısı açılır.

  4. Çözüm Gezgini'da employees.xsd kısayol menüsünü açın ve kodu görüntüle'yi seçin.

  5. employees.xsd dosyasının içeriğini aşağıdaki şemayla değiştirin.

    <?xml version="1.0" encoding="utf-8" ?>
    <xs:schema xmlns="http://schemas.microsoft.com/vsto/samples"
        targetNamespace="http://schemas.microsoft.com/vsto/samples"
        xmlns:xs="http://www.w3.org/2001/XMLSchema"
        elementFormDefault="qualified">
      <xs:element name="employees" type="EmployeesType"></xs:element>
      <xs:complexType name="EmployeesType">
        <xs:all>
          <xs:element name="employee" type="EmployeeType"/>
        </xs:all>
      </xs:complexType>
      <xs:complexType name="EmployeeType">
        <xs:sequence>
          <xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="1"/>
          <xs:element name="hireDate" type="xs:date" minOccurs="1" maxOccurs="1"/>
          <xs:element name="title" type="TitleType" minOccurs="1" maxOccurs="1"/>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="TitleType">
        <xs:restriction base="xs:string">
          <xs:enumeration value ="Engineer"/>
          <xs:enumeration value ="Designer"/>
          <xs:enumeration value ="Manager"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:schema>
    
  6. Dosya menüsünde, employees.xml dosyasında ve employees.xsd dosyalarında yaptığınız değişiklikleri kaydetmek için Tümünü Kaydet'e tıklayın.

XML şemasını belgeye ekleme

öğesinin geçerli değerlerine title bağlamak DropDownListContentControl için XML şemasını belgeye eklemeniz gerekir.

XML şemasını belgeye eklemek için ( Word 2013 )

  1. Tasarımcıda EmployeeControls.docx'u etkinleştirin.

  2. Şeritte Geliştirici sekmesini ve ardından Eklentiler düğmesini seçin.

  3. Şablonlar ve Eklentiler iletişim kutusunda XML Şeması sekmesini ve ardından Şema Ekle düğmesini seçin.

  4. Daha önce oluşturduğunuz ve proje dizininizde bulunan employees.xsd şemasına göz atın ve aç düğmesini seçin.

  5. Şema Ayarlar iletişim kutusunda Tamam düğmesini seçin.

  6. Şablonlar ve Eklentiler iletişim kutusunu kapatmak için Tamam düğmesini seçin.

XML şemasını belgeye eklemek için (Word 2010)

  1. Tasarımcıda EmployeeControls.docx'u etkinleştirin.

  2. Şeritte Geliştirici sekmesini seçin.

  3. XML grubunda Şema düğmesini seçin.

  4. Şablonlar ve Eklentiler iletişim kutusunda XML Şeması sekmesini ve ardından Şema Ekle düğmesini seçin.

  5. Daha önce oluşturduğunuz ve proje dizininizde bulunan employees.xsd şemasına göz atın ve Aç düğmesini seçin.

  6. Şema Ayarlar iletişim kutusunda Tamam düğmesini seçin.

  7. Şablonlar ve Eklentiler iletişim kutusunu kapatmak için Tamam düğmesini seçin.

    XML Yapısı görev bölmesi açılır.

  8. XML Yapısı görev bölmesini kapatın.

Belgeye özel XML bölümü ekleme

İçerik denetimlerini XML dosyasındaki öğelere bağlamadan önce, XML dosyasının içeriğini belgedeki yeni bir özel XML bölümüne eklemeniz gerekir.

Belgeye özel XML bölümü eklemek için

  1. Çözüm Gezgini,ThisDocument.cs veya ThisDocument.vb kısayol menüsünü açın ve kodu görüntüle'yi seçin.

  2. Sınıfına aşağıdaki bildirimleri ThisDocument ekleyin. Bu kod, belgeye özel XML bölümü eklemek için kullanacağınız birkaç nesne bildirir.

    [CachedAttribute()]
    public string employeeXMLPartID = string.Empty;
    private Office.CustomXMLPart employeeXMLPart;
    private const string prefix = "xmlns:ns='http://schemas.microsoft.com/vsto/samples'";
    
  3. Sınıfına aşağıdaki yöntemi ThisDocument ekleyin. Bu yöntem, derlemeye kaynak olarak eklenmiş XML veri dosyasının içeriğini alır ve içeriğini bir XML dizesi olarak döndürür.

    private string GetXmlFromResource()
    {
        System.Reflection.Assembly asm =
            System.Reflection.Assembly.GetExecutingAssembly();
        System.IO.Stream stream1 = asm.GetManifestResourceStream(
            "EmployeeControls.employees.xml");
    
        using (System.IO.StreamReader resourceReader =
                new System.IO.StreamReader(stream1))
        {
            if (resourceReader != null)
            {
                return resourceReader.ReadToEnd();
            }
        }
    
        return null;
    }
    
  4. Sınıfına aşağıdaki yöntemi ThisDocument ekleyin. yöntemi, AddCustomXmlPart yöntemine geçirilen bir XML dizesi içeren yeni bir özel XML bölümü oluşturur.

    Özel XML bölümünün yalnızca bir kez oluşturulduğundan emin olmak için, yöntem özel XML bölümünü yalnızca eşleşen GUID'ye sahip bir özel XML bölümü belgede zaten yoksa oluşturur. Bu yöntem ilk kez çağrıldığında, özelliğinin Id değerini dizeye employeeXMLPartID kaydeder. Dizenin employeeXMLPartID değeri, özniteliği kullanılarak CachedAttribute bildirildiği için belgede kalıcı hale getiriliyor.

    private void AddCustomXmlPart(string xmlData)
    {
        if (xmlData != null)
        {
            employeeXMLPart = this.CustomXMLParts.SelectByID(employeeXMLPartID);
            if (employeeXMLPart == null)
            {
                employeeXMLPart = this.CustomXMLParts.Add(xmlData);
                employeeXMLPart.NamespaceManager.AddNamespace("ns", 
                    @"http://schemas.microsoft.com/vsto/samples");
                employeeXMLPartID = employeeXMLPart.Id;
            }
        }
    }
    

İçerik denetimlerini özel XML bölümündeki öğelere bağlama

Her içerik denetiminin XMLMapping özelliğini kullanarak her içerik denetimini özel XML bölümündeki bir öğeye bağlayın.

İçerik denetimlerini özel XML bölümündeki öğelere bağlamak için

  1. Sınıfına aşağıdaki yöntemi ThisDocument ekleyin. Bu yöntem, her içerik denetimini özel XML bölümündeki bir öğeye bağlar ve öğesinin DatePickerContentControltarih görüntüleme biçimini ayarlar.

    private void BindControlsToCustomXmlPart()
    {
        string xPathName = "ns:employees/ns:employee/ns:name";
        this.plainTextContentControl1.XMLMapping.SetMapping(xPathName,
            prefix, employeeXMLPart);
    
        string xPathDate = "ns:employees/ns:employee/ns:hireDate";
        this.datePickerContentControl1.DateDisplayFormat = "MMMM d, yyyy";
        this.datePickerContentControl1.XMLMapping.SetMapping(xPathDate,
            prefix, employeeXMLPart);
    
        string xPathTitle = "ns:employees/ns:employee/ns:title";
        this.dropDownListContentControl1.XMLMapping.SetMapping(xPathTitle,
            prefix, employeeXMLPart);
    }
    

Belge açıldığında kodunuzu çalıştırma

Özel XML bölümünü oluşturun ve belge açıldığında özel denetimleri verilere bağlayın.

Belge açıldığında kodunuzu çalıştırmak için

  1. Sınıfının yöntemine ThisDocument_StartupThisDocument aşağıdaki kodu ekleyin. Bu kod employees.xml dosyasından XML dizesini alır, XML dizesini belgedeki yeni bir özel XML bölümüne ekler ve içerik denetimlerini özel XML bölümündeki öğelere bağlar.

    string xmlData = GetXmlFromResource();
    
    if (xmlData != null)
    {
        AddCustomXmlPart(xmlData);
        BindControlsToCustomXmlPart();
    }
    

Projeyi test etme

Belgeyi açtığınızda, içerik denetimleri özel XML bölümündeki öğelerden verileri görüntüler. öğesine tıklayarak DropDownListContentControl öğesi için title employees.xsd dosyasında tanımlanan üç geçerli değerden birini seçebilirsiniz. İçerik denetimlerinden herhangi birinde verileri düzenlerseniz, yeni değerler belgedeki özel XML bölümüne kaydedilir.

İçerik denetimlerini test etmek için

  1. Projeyi çalıştırmak için F5 tuşuna basın.

  2. Belgedeki tablonun aşağıdaki tabloya benzediğini doğrulayın. İkinci sütundaki dizelerin her biri, belgedeki özel XML bölümündeki bir öğeden alınır.

    Sütun Değer
    Çalışan Adı Karina Leal
    İşe Alma Tarihi 1 Nisan 1999
    Başlık Yönetici
  3. Çalışan Adı hücresinin sağındaki hücreyi seçin ve farklı bir ad yazın.

  4. İşe Alma Tarihi hücresinin sağındaki hücreyi seçin ve tarih seçicide farklı bir tarih seçin.

  5. Başlık hücresinin sağındaki hücreyi seçin ve açılan listeden yeni bir öğe seçin.

  6. Belgeyi kaydedin ve kapatın.

  7. Dosya Gezgini'da projenizin konumu altındaki \bin\Debug klasörünü açın.

  8. EmployeeControls.docx kısayol menüsünü açın ve yeniden adlandır'ı seçin.

  9. Dosyayı EmployeeControls.docx.zip olarak adlandırın.

    EmployeeControls.docx belgesi Open XML Biçiminde kaydedilir. Bu belgeyi .zip dosya adı uzantısıyla yeniden adlandırarak, belgenin içeriğini inceleyebilirsiniz. Open XML hakkında daha fazla bilgi için Office (2007) Open XML dosya biçimlerine giriş teknik makalesine bakın.

  10. EmployeeControls.docx.zip dosyasını açın.

  11. customXml klasörünü açın.

  12. item2.xml kısayol menüsünü açın ve aç'ı seçin.

    Bu dosya, belgeye eklediğiniz özel XML bölümünü içerir.

  13. , hireDateve title öğelerinin belgedeki nameiçerik denetimlerine girdiğiniz yeni değerleri içerdiğini doğrulayın.

  14. item2.xml dosyasını kapatın.

Sonraki adımlar

İçerik denetimlerini kullanma hakkında daha fazla bilgiyi şu konulardan öğrenebilirsiniz:

  • Şablon oluşturmak için tüm kullanılabilir içerik denetimlerini kullanın. Daha fazla bilgi için bkz . İzlenecek yol: İçerik denetimlerini kullanarak şablon oluşturma.

  • Belge kapatılırken özel XML bölümlerindeki verileri değiştirin. Kullanıcı belgeyi bir sonraki açışında, XML öğelerine bağlı içerik denetimleri yeni verileri görüntüler.

  • Belgenin bölümlerini korumak için içerik denetimlerini kullanın. Daha fazla bilgi için bkz . Nasıl yapılır: İçerik denetimlerini kullanarak belgelerin bölümlerini koruma.