Bagikan melalui


Layanan XAML

Topik ini menjelaskan kemampuan set teknologi yang dikenal sebagai Layanan XAML .NET. Sebagian besar layanan dan API yang dijelaskan terletak di perakitan System.Xaml. Layanan termasuk pembaca dan penulis, kelas skema dan dukungan skema, pabrik, attributing kelas, dukungan intrinsik bahasa XAML, dan fitur bahasa XAML lainnya.

Tentang Dokumentasi ini

Dokumentasi konseptual untuk Layanan .NET XAML mengasumsikan bahwa Anda memiliki pengalaman sebelumnya dengan bahasa XAML dan bagaimana mungkin berlaku untuk kerangka kerja tertentu, misalnya Windows Presentation Foundation (WPF) atau Windows Workflow Foundation, atau area fitur teknologi tertentu, misalnya fitur kustomisasi build di Microsoft.Build.Framework.XamlTypes. Dokumentasi ini tidak mencoba menjelaskan dasar-dasar XAML sebagai bahasa markup, terminologi sintaks XAML, atau materi pengantar lainnya. Sebagai gantinya, dokumentasi ini berfokus secara khusus menggunakan Layanan XAML .NET yang diaktifkan di pustaka rakitan System.Xaml. Sebagian besar API ini adalah untuk skenario integrasi dan ekstensibilitas bahasa XAML. Ini mungkin termasuk salah satu skenario berikut:

  • Memperluas kemampuan pembaca XAML dasar atau penulis XAML (memproses aliran simpul XAML secara langsung; turunkan pembaca XAML atau penulis XAML Anda sendiri).

  • Menentukan jenis kustom yang dapat digunakan XAML yang tidak memiliki dependensi kerangka kerja tertentu, dan membuat attributing jenis untuk menyampaikan karakteristik sistem jenis XAML mereka ke Layanan XAML .NET.

  • Hosting pembaca XAML atau penulis XAML sebagai komponen aplikasi, seperti desainer visual atau editor interaktif untuk sumber markup XAML.

  • Menulis pengonversi nilai XAML (ekstensi markup; ketik pengonversi untuk jenis kustom).

  • Menentukan konteks skema XAML kustom (menggunakan teknik pemuatan rakitan alternatif untuk sumber jenis backing; menggunakan teknik pencarian jenis yang diketahui alih-alih selalu mencerminkan rakitan; menggunakan konsep rakitan yang dimuat yang tidak menggunakan runtime bahasa umum (CLR) AppDomain dan model keamanan terkaitnya).

  • Memperluas sistem jenis XAML dasar.

  • Menggunakan teknik Lookup atau Invoker untuk memengaruhi sistem jenis XAML dan bagaimana backing jenis dievaluasi.

Jika Anda mencari materi pengantar di XAML sebagai bahasa, Anda dapat mencoba gambaran umum XAML (WPF .NET). Topik itu membahas XAML untuk audiens yang baru baik untuk Windows Presentation Foundation (WPF) dan juga untuk menggunakan markup XAML dan fitur bahasa XAML. Dokumen lain yang berguna adalah materi pengantar dalam spesifikasi bahasa XAML.

Layanan .NET XAML dan System.Xaml dalam Arsitektur .NET

Layanan XAML .NET dan perakitan System.Xaml menentukan banyak hal yang diperlukan untuk mendukung fitur bahasa XAML. Ini termasuk kelas dasar untuk pembaca XAML dan penulis XAML. Fitur terpenting yang ditambahkan ke Layanan XAML .NET yang tidak ada dalam implementasi XAML khusus kerangka kerja adalah representasi sistem jenis untuk XAML. Representasi sistem jenis menyajikan XAML dengan cara berorientasi objek yang berpusat pada kemampuan XAML tanpa mengambil dependensi pada kemampuan kerangka kerja tertentu.

Sistem jenis XAML tidak dibatasi oleh formulir markup atau spesifikasi run-time dari asal XAML; juga tidak dibatasi oleh sistem jenis dukungan tertentu. Sistem jenis XAML mencakup representasi objek untuk jenis, anggota, konteks skema XAML, konsep tingkat XML, dan konsep bahasa XAML lainnya atau intrinsik XAML. Menggunakan atau memperluas sistem jenis XAML memungkinkan untuk berasal dari kelas seperti pembaca XAML dan penulis XAML, dan memperluas fungsionalitas representasi XAML ke dalam fitur tertentu yang diaktifkan oleh kerangka kerja, teknologi, atau aplikasi yang mengonsumsi atau memancarkan XAML. Konsep konteks skema XAML memungkinkan operasi penulisan grafik objek praktis dari kombinasi implementasi penulis objek XAML, sistem jenis dukungan teknologi seperti yang dikomunikasikan melalui informasi perakitan dalam konteks, dan sumber simpul XAML. Untuk informasi selengkapnya tentang konsep skema XAML. lihat Konteks Skema XAML Default dan Konteks Skema WPF XAML.

XAML Node Streams, XAML Readers, dan XAML Writers

Untuk memahami peran yang dimainkan Layanan XAML .NET dalam hubungan antara bahasa XAML dan teknologi tertentu yang menggunakan XAML sebagai bahasa, sangat membantu untuk memahami konsep aliran simpul XAML dan bagaimana konsep itu membentuk API dan terminologi. Aliran simpul XAML adalah perantara konseptual antara representasi bahasa XAML dan grafik objek yang diwakili atau didefinisikan XAML.

  • Pembaca XAML adalah entitas yang memproses XAML dalam beberapa bentuk, dan menghasilkan aliran simpul XAML. Dalam API, pembaca XAML diwakili oleh kelas dasar XamlReader.

  • Penulis XAML adalah entitas yang memproses aliran simpul XAML dan menghasilkan sesuatu yang lain. Dalam API, penulis XAML diwakili oleh kelas dasar XamlWriter.

    Dua skenario paling umum yang melibatkan XAML adalah memuat XAML untuk membuat instans grafik objek, dan menyimpan grafik objek dari aplikasi atau alat dan menghasilkan representasi XAML (biasanya dalam bentuk markup yang disimpan sebagai file teks). Memuat XAML dan membuat grafik objek sering disebut dalam dokumentasi ini sebagai jalur beban. Menyimpan atau membuat serial grafik objek yang ada ke XAML sering disebut dalam dokumentasi ini sebagai jalur penyimpanan.

    Jenis jalur beban yang paling umum dapat dijelaskan sebagai berikut:

  • Mulailah dengan representasi XAML, dalam format XML yang dikodekan UTF dan disimpan sebagai file teks.

  • Muat XAML tersebut ke dalam XamlXmlReader. XamlXmlReader adalah subkelas XamlReader.

  • Hasilnya adalah aliran simpul XAML. Anda dapat mengakses simpul individual aliran simpul XAML menggunakan API XamlXmlReader / XamlReader. Operasi yang paling khas di sini adalah maju melalui aliran simpul XAML, memproses setiap simpul menggunakan metafora "rekaman saat ini".

  • Teruskan simpul yang dihasilkan dari aliran simpul XAML ke API XamlObjectWriter. XamlObjectWriter adalah subkelas XamlWriter.

  • XamlObjectWriter menulis grafik objek, satu objek pada satu waktu, sesuai dengan kemajuan melalui aliran simpul XAML sumber. Penulisan objek dilakukan dengan bantuan konteks skema XAML dan implementasi yang dapat mengakses rakitan dan jenis sistem dan kerangka kerja jenis backing.

  • Panggil Result di akhir aliran simpul XAML untuk mendapatkan objek akar grafik objek.

    Jenis jalur penyimpanan yang paling umum dapat dijelaskan sebagai berikut:

  • Mulailah dengan grafik objek dari seluruh waktu proses aplikasi, konten UI dan status run time, atau segmen yang lebih kecil dari representasi objek aplikasi keseluruhan pada waktu proses.

  • Dari objek mulai logis, seperti akar aplikasi atau akar dokumen, muat objek ke XamlObjectReader. XamlObjectReader adalah subkelas XamlReader.

  • Hasilnya adalah aliran simpul XAML. Anda dapat mengakses simpul individual aliran simpul XAML menggunakan XamlObjectReader dan API XamlReader. Operasi yang paling khas di sini adalah maju melalui aliran simpul XAML, memproses setiap simpul menggunakan metafora "rekaman saat ini".

  • Teruskan simpul yang dihasilkan dari aliran simpul XAML ke API XamlXmlWriter. XamlXmlWriter adalah subkelas XamlWriter.

  • XamlXmlWriter menulis XAML dalam pengodean XML UTF. Anda dapat menyimpan ini sebagai file teks, sebagai aliran, atau dalam formulir lain.

  • Panggil Flush untuk mendapatkan output akhir.

Untuk informasi selengkapnya tentang konsep aliran simpul XAML, lihat Memahami Struktur dan Konsep Aliran Simpul XAML.

Kelas XamlServices

Tidak selalu perlu untuk menangani aliran simpul XAML. Jika Anda menginginkan jalur beban dasar atau jalur penyimpanan dasar, Anda dapat menggunakan API di kelas XamlServices.

  • Berbagai tanda tangan Load menerapkan jalur beban. Anda dapat memuat file atau streaming, atau dapat memuat XmlReader, TextReader, atau XamlReader yang membungkus input XAML Anda dengan memuat dengan API pembaca tersebut.

  • Berbagai tanda tangan Save menyimpan grafik objek dan menghasilkan output sebagai aliran, file, atau instans XmlWriter/TextWriter.

  • Transform mengonversi XAML dengan menautkan jalur beban dan jalur penyimpanan sebagai operasi tunggal. Konteks skema yang berbeda atau sistem jenis dukungan yang berbeda dapat digunakan untuk XamlReader dan XamlWriter, yang memengaruhi bagaimana XAML yang dihasilkan diubah.

Untuk informasi selengkapnya tentang cara menggunakan XamlServices, lihat Kelas XAMLServices dan Pembacaan atau Penulisan XAML Dasar.

Sistem Tipe XAML

Sistem jenis XAML menyediakan API yang diperlukan untuk bekerja dengan node individual tertentu dari aliran simpul XAML.

XamlType adalah representasi untuk objek - apa yang Anda proses antara node objek awal dan simpul objek akhir.

XamlMember adalah representasi untuk anggota objek - apa yang Anda proses antara node anggota awal dan simpul anggota akhir.

API seperti GetAllMembers dan GetMember dan DeclaringType melaporkan hubungan antara XamlType dan XamlMember.

Perilaku default sistem jenis XAML seperti yang diterapkan oleh Layanan XAML .NET didasarkan pada runtime bahasa umum (CLR), dan analisis statis jenis CLR dalam rakitan dengan menggunakan pantulan. Oleh karena itu, untuk jenis CLR tertentu, implementasi default sistem jenis XAML dapat mengekspos skema XAML jenis tersebut dan anggotanya dan melaporkannya dalam hal sistem jenis XAML. Dalam sistem jenis XAML default, konsep penetapan jenis dipetakan ke warisan CLR, dan konsep instans, jenis nilai, dan sebagainya, juga dipetakan ke perilaku dan fitur pendukung CLR.

Referensi untuk Fitur Bahasa XAML

Untuk mendukung XAML, Layanan XAML .NET menyediakan implementasi spesifik konsep bahasa XAML sebagaimana didefinisikan untuk namespace XAML bahasa XAML. Ini didokumenkan sebagai halaman referensi tertentu. Fitur bahasa didokumentasikan dari perspektif bagaimana fitur bahasa ini berperilaku ketika diproses oleh pembaca XAML atau penulis XAML yang didefinisikan oleh Layanan XAML .NET. Untuk informasi selengkapnya, lihat Fitur Bahasa XAML Namespace (x:).