XamlReader Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menyediakan mesin prosesor XAML untuk mengurai XAML dan membuat pohon objek yang sesuai.
public ref class XamlReader sealed
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class XamlReader final
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class XamlReader
Public NotInheritable Class XamlReader
- Warisan
- Atribut
Persyaratan Windows
Rangkaian perangkat |
Windows 10 (diperkenalkan dalam 10.0.10240.0)
|
API contract |
Windows.Foundation.UniversalApiContract (diperkenalkan dalam v1.0)
|
Contoh
Contoh ini membuat satu Elips dari string XAML, memanggil Muat. Kemudian menghubungkan Ellipse yang dibuat tetapi terputus ke koleksi Anak dari elemen yang sudah ada di aplikasi UWP yang sedang berjalan. Akhirnya contoh mengakses Elips lagi di lokasi tempat Elips ditambahkan dengan menggunakan kueri, dan mengubah salah satu propertinya.
string xaml =
"<Ellipse Name=\"EllipseAdded\" Width=\"300.5\" Height=\"200\"
Fill=\"Red\" xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"/>";
object ellipse = XamlReader.Load(xaml);
//stackPanelRoot is the visual root of a Page in existing XAML markup already loaded by the appmodel
stackPanelRoot.Children.Add(ellipse as UIElement);
//walk the tree using XLinq result and cast back to a XAML type to set a property on it at runtime
var result = (from item in stackPanelRoot.Children
where (item is FrameworkElement)
&& ((FrameworkElement) item).Name == "EllipseAdded"
select item as FrameworkElement).FirstOrDefault();
((Ellipse) result).Fill = new SolidColorBrush(Colors.Yellow);
Keterangan
XamlReader adalah kelas utilitas dengan metode yang membuat objek berdasarkan input markup XAML dalam bentuk string. XamlReader menyediakan perilaku konstruksi objek yang menyejajarkan bagaimana XAML diurai oleh parser XAML Windows Runtime dan penggunaan XAML untuk mendefinisikan UI aplikasi UWP.
Mengurai input XAML dengan XamlReader.Load menghasilkan pohon objek run-time objek Windows Runtime. Pohon objek menyediakan cara untuk memprogram terhadap objek-objek tersebut pada waktu proses, dengan berjalan melalui bagian-bagian pohon lengkap.
Ada beberapa konsep yang penting untuk dipahami, saat Anda membuat objek dari XAML dengan metode XamlReader.Load :
- String konten XAML harus menentukan satu elemen akar.
- String konten XAML harus berupa XML yang terbentuk dengan baik, serta XAML yang valid.
- Konten XAML harus menentukan xmln default. Biasanya ini adalah kosakata XAML Windows Runtime, seperti yang diidentifikasi oleh
http://schemas.microsoft.com/winfx/2006/xaml/presentation
. - Setiap rakitan kustom yang dirujuk dalam pemetaan namespace XAML harus sudah tersedia untuk aplikasi.
- XAML tidak boleh mencoba menentukan atribut x:Class, atau menyertakan atribut yang ditentukan XAML untuk penanganan aktivitas.
- Anda tidak dapat menggunakan FindName di namescope XAML umum untuk menemukan objek runtime yang ditambahkan, tetapi Anda dapat mencari dalam namescope XAML tertentu dari objek yang dibuat. Untuk informasi selengkapnya, lihat Namescope XAML.
- Logika pembuatan objek tidak dapat mengintegrasikan XAML yang dimuat dengan kelas code-behind pada durasi. Jika Anda ingin menambahkan penanganan aktivitas, Anda harus melakukannya dalam kode dengan mereferensikan objek yang diperoleh dari dalam struktur pohon objek dari hasil Muat , dan menggunakan sintaks khusus bahasa untuk melampirkan penangan (seperti
+=
). - Harus ada konten XAML; Anda tidak dapat mengganti seluruh pohon konten. Anda setidaknya harus mempertahankan elemen akar asli sehingga implikasi model aplikasi dari halaman XAML yang dimuat tetap aktif.
- Objek yang dibuat dari Load hanya dapat ditetapkan ke satu lokasi di pohon objek utama. Jika Anda ingin menambahkan objek yang dibuat dari XAML yang identik ke area pohon objek utama aplikasi yang berbeda, Anda harus mengurai XAML beberapa kali menggunakan string input yang sama, menggunakan tujuan yang berbeda untuk nilai pengembalian.
- Pohon objek utama yang tersisa harus mendukung properti yang sesuai untuk diatur.
Metode
Load(String) |
Mengurai fragmen XAML yang terbentuk dengan baik dan membuat pohon objek yang sesuai, dan mengembalikan akar pohon objek. |
LoadWithInitialTemplateValidation(String) |
Mengurai fragmen XAML yang terbentuk dengan baik membuat pohon objek yang sesuai, dan mengembalikan akar pohon objek. Juga melakukan validasi waktu muat dari templat yang ditautkan. |