Control.DefaultStyleKey Properti

Definisi

Mendapatkan atau mengatur kunci yang mereferensikan gaya default untuk kontrol. Penulis kontrol kustom menggunakan properti ini untuk mengubah default untuk gaya yang digunakan kontrolnya.

protected:
 property Platform::Object ^ DefaultStyleKey { Platform::Object ^ get(); void set(Platform::Object ^ value); };
IInspectable DefaultStyleKey();

void DefaultStyleKey(IInspectable value);
protected object DefaultStyleKey { get; set; }
Protected Property DefaultStyleKey As Object

Nilai Properti

Object

Platform::Object

IInspectable

Kunci yang mereferensikan gaya default untuk kontrol. Untuk bekerja dengan benar sebagai bagian dari pencarian gaya tema, nilai ini diharapkan menjadi nilai System.Type .

Catatan

Ekstensi komponen Visual C++ (C++/CX) menggunakan string yang merupakan nama yang memenuhi syarat dari jenis tersebut. Tetapi ini bergantung pada kode yang dihasilkan yang menghasilkan TypeName setelah diakses oleh kompilator XAML; lihat Keterangan.

Keterangan

DefaultStyleKey adalah salah satu dari sangat sedikit properti yang dilindungi di Windows Runtime API. Ini hanya ditujukan untuk digunakan oleh penulis kontrol, yang akan mensubkelas beberapa kelas kontrol yang ada dan oleh karena itu memiliki akses yang diperlukan untuk mengatur properti ini. Untuk banyak skenario kontrol kustom di mana Anda akan mengatur DefaultStyleKey, Anda juga akan menimpa OnApplyTemplate.

Jenis pengembalian DefaultStyleKey diketik secara longgar sebagai Objek dalam sintaks, tetapi sistem gaya XAML akan mengharapkan nilai untuk memberikan referensi jenis:

  • Untuk kontrol yang memiliki logika yang ditulis dalam C#, nilai DefaultStyleKey harus menjadi instans System.Type. Biasanya Anda menetapkan nilai ini di konstruktor default:
public CustomControl1()
{
    this.DefaultStyleKey = typeof(CustomControl1);
}
  • Untuk kontrol yang memiliki logika yang ditulis dalam Microsoft Visual Basic, nilai DefaultStyleKey harus menjadi instans System.Type. Biasanya Anda menetapkan nilai ini di konstruktor default:
Public Sub New()
    Me.DefaultStyleKey = GetType(CustomControl1)
End Sub
CustomControl1::CustomControl1() // public: in the header.
{
	DefaultStyleKey(winrt::box_value(L"App1.CustomControl1"));
}
  • Untuk kontrol yang memiliki logika yang ditulis dalam ekstensi komponen Visual C++ (C++/CX), nilai DefaultStyleKey harus berupa string yang memenuhi syarat namespace yang merupakan nama kelas kontrol kustom. Biasanya Anda menetapkan nilai ini di konstruktor default:
CustomControl1::CustomControl1() //public: in the header
{
    DefaultStyleKey = "App1.CustomControl1";
}

Catatan

Pada akhirnya string saja tidak cukup untuk mendukung referensi jenis ekstensi komponen Visual C++ (C++/CX). Jika Anda menggunakan opsi Tambahkan / Item Baru / Kontrol Bertempur di Penjelajah Solusi, templat dan dukungan untuk ekstensi komponen Visual C++ (C++/CX) dan XAML menghasilkan kelas yang memberikan info IXamlMetadataProvider . Pengkompilasi XAML dapat mengakses kode ini ketika XAML dimuat, dan menggunakannya untuk memvalidasi dan membuat jenis dan anggota dan bergabung dengan kelas parsial. Sejauh yang Anda tentukan dalam kode aplikasi Anda sendiri, string adalah semua yang Anda butuhkan. Tetapi jika Anda ingin tahu, Anda dapat melihat file XamlTypeInfo.g.h dan XamlTypeInfo.g.cpp yang dihasilkan.

Penulis kontrol dapat memilih untuk tidak memberikan nilai untuk DefaultStyleKey, tetapi itu jarang terjadi. Hasilnya adalah bahwa gaya default adalah gaya seperti yang didefinisikan oleh kelas dasar. Dalam beberapa kasus (seperti untuk ContentControl) nilainya null. Bahkan jika Anda memilih untuk tidak menentukan ulang nilai, pastikan bahwa gaya default asli berguna untuk merender kontrol Anda.

Ketika kontrol XAML dimuat, proses penyajian dimulai, dan sistem mencari templat yang benar untuk diterapkan, yang sedang dimuat adalah gaya default XAML untuk kontrol, termasuk templatnya. Disertakan dalam Windows Runtime adalah salinan internal dari semua gaya default untuk semua kontrol XAML yang ditentukan Windows Runtime. Referensi jenis di DefaultStyleKey memberi tahu sistem yang menamai sumber daya XAML untuk dimuat sebagai gaya ini. Dalam bentuk XAML, gaya benar-benar kunci berdasarkan jenis meskipun tidak ada mekanisme dalam Windows Runtime XAML yang mendefinisikan referensi jenis secara eksplisit. Tetapi untuk nilai TargetType apa pun, yang merupakan atribut yang menyimpan kunci untuk pencarian, secara implisit diasumsikan untuk mewakili referensi jenis dalam bentuk string. Misalnya, DefaultStyleKey dari Tombol adalah instans System.Type di mana Nama adalah "Button", FullName adalah "Windows.UI.Xaml.Controls.Button". Sistem menggunakan info ini untuk mengetahui cara memuat Gaya dari sumber daya internal yang memiliki TargetType="Button".

Kontrol kustom biasanya tidak berada di namespace XAML default. Sebaliknya, mereka berada di namespace XAML yang memiliki menggunakan: pernyataan untuk mereferensikan namespace kode aplikasi. Secara default, proyek membuat awalan "lokal:" yang memetakan namespace ini untuk Anda. Anda juga dapat memetakan namespace XAML lainnya untuk merujuk ke namespace kode tambahan untuk kontrol atau kode lain yang ditentukan aplikasi Anda.

Awalan "lokal:" (atau beberapa namespace layanan lain yang memetakan ke kode dan namespace layanan aplikasi Anda) harus mendahului nama kontrol kustom Anda, saat berada di XAML sebagai nilai TargetType . Ini juga sudah dilakukan untuk Anda dengan templat awal; saat menambahkan kontrol baru, Anda akan melihat file generic.xaml yang hanya berisi satu gaya. Gaya tersebut akan memiliki nilai TargetType yang merupakan string yang dimulai dengan "local:" dan diselesaikan dengan nama yang Anda pilih untuk kelas kontrol kustom Anda. Untuk mencocokkan contoh sebelumnya yang mengatur DefaultStyleKey dalam CustomControl1 definisi, Anda akan melihat elemen untuk <Style TargetType="local:CustomControl1"> ditentukan dalam generic.xaml awal, dan gaya tersebut menentukan templat kontrol serta mengatur properti lainnya.

Catatan

Awalan "local:" diisolasi ke XAML tempat prefiks ditentukan dan digunakan. Namespace XAML dan awalan hanya memiliki arti dalam XAML dan mandiri untuk setiap file XAML. Nilai DefaultStyleKey dalam kode tidak menyertakan awalan.

Berlaku untuk

Lihat juga