ControlTemplate 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.
Menentukan pohon elemen yang digunakan sebagai templat kontrol untuk kontrol.
public ref class ControlTemplate sealed : FrameworkTemplate
/// [Windows.Foundation.Metadata.Activatable(65536, "Microsoft.UI.Xaml.WinUIContract")]
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class ControlTemplate final : FrameworkTemplate
[Windows.Foundation.Metadata.Activatable(65536, "Microsoft.UI.Xaml.WinUIContract")]
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class ControlTemplate : FrameworkTemplate
Public NotInheritable Class ControlTemplate
Inherits FrameworkTemplate
<ControlTemplate ...>
templateRootElement
</ControlTemplate>
- Warisan
- Atribut
Contoh
Contoh berikut membuat ControlTemplate sederhana untuk Tombol. Templat kontrol berisi satu Kisi dan menentukan perilaku ini:
- Ketika pengguna meletakkan mouse di atas Tombol, Kisi berubah dari hijau ke merah selama satu setengah detik.
- Ketika pengguna memindahkan mouse menjauh dari tombol, Kisi segera berubah kembali menjadi hijau.
<ControlTemplate TargetType="Button">
<Grid >
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualStateGroup.Transitions>
<!--Take one half second to transition to the PointerOver state.-->
<VisualTransition To="PointerOver"
GeneratedDuration="0:0:0.5"/>
</VisualStateGroup.Transitions>
<VisualState x:Name="Normal" />
<!--Change the SolidColorBrush, ButtonBrush, to red when the
Pointer is over the button.-->
<VisualState x:Name="PointerOver">
<Storyboard>
<ColorAnimation Storyboard.TargetName="ButtonBrush"
Storyboard.TargetProperty="Color" To="Red" />
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Grid.Background>
<SolidColorBrush x:Name="ButtonBrush" Color="Green"/>
</Grid.Background>
</Grid>
</ControlTemplate>
Anda dapat melihat templat lengkap untuk setiap kontrol XAML dalam file generic.xaml . File ini ditemukan di folder (File Program)\Windows Kits\10\DesignTime\CommonConfiguration\Neutral\UAP<SDK version>\Generic.
Keterangan
Untuk informasi dan contoh selengkapnya, lihat templat kontrol XAML.
ControlTemplate digunakan sebagai nilai properti Control.Template , yang menentukan visual kontrol dengan menerapkan templat. Anda hampir selalu menentukan ControlTemplate sebagai sumber daya XAML, menggunakan kunci implisit TargetType yang sama dengan Gaya yang mengatur Control.Template dengan Setter. Anda jarang menetapkan nilai untuk Control.Template langsung pada instans kontrol.
Benar-benar hanya ada dua properti yang Anda gunakan saat menentukan ControlTemplate: TargetType, dan konten XAML implisit. ControlTemplate mewarisi perilaku konten XAML implisit dari induk FrameworkTemplate-nya . Pada dasarnya elemen yang terkandung dalam ControlTemplate seperti yang didefinisikan dalam XAML menetapkan elemen akar untuk struktur elemen XAML lebih lanjut yang menentukan templat. Ini mengatur properti "Templat" yang kemudian tidak dapat diperiksa oleh kode dan hanya memiliki arti tentang bagaimana pengurai XAML menetapkan konten untuk kontrol berdasarkan penerapan templat tersebut.
Agar kontennya diatur dari ControlTemplate, elemen kontrol harus merupakan subkelas Kontrol sejati, sehingga memiliki properti Control.Template . Ada kasus lain di mana templat menerapkan konten tetapi ini biasanya melibatkan salah satu kelas templat turunan FrameworkTemplate lainnya (DataTemplate atau ItemsPanelTemplate).
Templat kontrol menyediakan visual dan bagian yang membentuk instans kontrol seperti yang muncul di UI aplikasi. Pada run time, templat telah diterapkan, sehingga semua bagian yang dibuat dari templat sekarang benar-benar bagian dari kontrol, dan dapat diakses oleh teknik seperti memeriksa namescope XAML dari dalam konten kontrol atau menggunakan kelas VisualTreeHelper . Peristiwa seperti peristiwa input terkadang mengekspos bagian kontrol yang berasal dari templat kontrol yang diterapkan.
Ada cara untuk mengakses konten yang ditentukan templat baik sebelum atau sesudah templat diterapkan ke instans kontrol tertentu; lihat OnApplyTemplate atau GetTemplateChild.
Titik waktu aktual bahwa ControlTemplate diterapkan ke instans kontrol dapat dideteksi karena ini memanggil metode virtual yang dilindungi OnApplyTemplate . Selama kontrol tidak disegel, Anda dapat mensubkelas kontrol sehingga Anda memiliki kesempatan untuk mengambil alih OnApplyTemplate. Penimpaan ini dapat ditulis untuk melakukan tindakan yang tidak akan dimungkinkan sebelum templat diterapkan. Misalnya, Anda dapat menghubungkan penanganan aktivitas untuk mengontrol bagian, atau mengatur properti kontrol ke bagian objek referensi yang dibuat dari templat tetapi tidak dimulai dengan nilai ekstensi markup {TemplateBinding} .
Konstruktor
| Nama | Deskripsi |
|---|---|
| ControlTemplate() |
Menginisialisasi instans baru kelas ControlTemplate . |
Properti
| Nama | Deskripsi |
|---|---|
| Dispatcher |
Selalu kembali |
| DispatcherQueue |
|
| TargetType |
Mendapatkan atau mengatur jenis yang diterapkan ControlTemplate . |
Metode
| Nama | Deskripsi |
|---|---|
| ClearValue(DependencyProperty) |
Menghapus nilai lokal properti dependensi. (Diperoleh dari DependencyObject) |
| GetAnimationBaseValue(DependencyProperty) |
Mengembalikan nilai dasar apa pun yang ditetapkan untuk properti dependensi, yang akan berlaku dalam kasus di mana animasi tidak aktif. (Diperoleh dari DependencyObject) |
| GetValue(DependencyProperty) |
Mengembalikan nilai efektif properti dependensi saat ini dari DependencyObject. (Diperoleh dari DependencyObject) |
| ReadLocalValue(DependencyProperty) |
Mengembalikan nilai lokal properti dependensi, jika nilai lokal diatur. (Diperoleh dari DependencyObject) |
| RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback) |
Mendaftarkan fungsi pemberitahuan untuk mendengarkan perubahan pada DependencyProperty tertentu pada instans DependencyObject ini. (Diperoleh dari DependencyObject) |
| SetValue(DependencyProperty, Object) |
Mengatur nilai lokal properti dependensi pada DependencyObject. (Diperoleh dari DependencyObject) |
| UnregisterPropertyChangedCallback(DependencyProperty, Int64) |
Membatalkan pemberitahuan perubahan yang sebelumnya terdaftar dengan memanggil RegisterPropertyChangedCallback. (Diperoleh dari DependencyObject) |