Bagikan melalui


WindowChrome Kelas

Definisi

Mewakili objek yang menjelaskan kustomisasi ke area non-klien jendela.

public ref class WindowChrome : System::Windows::Freezable
public class WindowChrome : System.Windows.Freezable
type WindowChrome = class
    inherit Freezable
Public Class WindowChrome
Inherits Freezable
Warisan

Keterangan

Kelas ini WindowChrome memungkinkan Anda memperluas konten Windows Presentation Foundation (WPF) ke area non-klien jendela yang biasanya dicadangkan untuk manajer jendela sistem operasi.

Windows Standar

Jendela standar terdiri dari dua persegi panjang yang tumpang tindih. Persegi panjang luar adalah area non-klien, yang sering disebut sebagai chrome. Ini digambar dan dikelola oleh manajer jendela sistem operasi. Dimensinya ditentukan oleh pengaturan sistem operasi standar. Bingkai non-klien menyediakan fitur dan perilaku jendela standar. Ini termasuk tombol caption (Minimalkan, Maksimalkan, dan Tutup), batas jendela, perilaku mengubah ukuran dan memindahkan, ikon dan judul aplikasi, dan menu sistem. Persegi panjang bagian dalam adalah area klien. Ini berisi konten aplikasi Anda, dan digambar dan dikelola oleh aplikasi. Untuk informasi selengkapnya tentang jendela di aplikasi WPF, lihat Gambaran Umum Windows WPF.

Ilustrasi berikut ini memperlihatkan bagian-bagian jendela standar.

Elemen Window

Windows Kustom

Anda dapat mengkustomisasi batas jendela dengan mengatur properti ke Window.WindowStyleNone atau dengan menggunakan WindowChrome kelas .

WindowStyle.None

Salah satu cara untuk menyesuaikan tampilan jendela aplikasi WPF adalah dengan mengatur properti ke Window.WindowStyleNone. Ini menghapus bingkai non-klien dari jendela dan hanya meninggalkan area klien, tempat Anda dapat menerapkan gaya kustom. Namun, ketika bingkai non-klien dihapus, Anda juga kehilangan fitur dan perilaku sistem yang disediakannya, seperti tombol caption dan mengubah ukuran jendela. Efek samping lainnya adalah bahwa jendela akan mencakup taskbar Windows ketika dimaksimalkan. Pengaturan WindowStyle.None memungkinkan Anda membuat aplikasi yang sepenuhnya kustom, tetapi juga mengharuskan Anda menerapkan logika kustom dalam aplikasi Anda untuk meniru perilaku jendela standar.

WindowChrome

Untuk menyesuaikan jendela sambil mempertahankan fungsionalitas standarnya, Anda dapat menggunakan WindowChrome kelas . Kelas WindowChrome memisahkan fungsionalitas bingkai jendela dari visual, dan memungkinkan Anda mengontrol batas antara area klien dan non-klien jendela aplikasi Anda. Kelas WindowChrome memungkinkan Anda menempatkan konten WPF di bingkai jendela dengan memperluas area klien untuk menutupi area non-klien. Pada saat yang sama, ia mempertahankan perilaku sistem melalui dua area yang tidak terlihat; batas mengubah ukuran dan area caption.

Ada dua bagian utama untuk membuat jendela kustom menggunakan WindowChrome kelas . Pertama, Anda menyesuaikan bagian non-klien jendela dengan mengatur properti yang diekspos pada WindowChrome objek. Kemudian Anda menyediakan templat untuk jendela yang menentukan bagian dari aplikasi Anda yang diperluas ke area non-klien. Properti yang terekspos pada WindowChrome objek adalah ResizeBorderThickness, , CornerRadiusCaptionHeight, dan GlassFrameThickness.

Properti ResizeBorderThickness menentukan batas yang tidak terlihat di sekitar bagian luar jendela aplikasi yang dapat diklik dan diseret pengguna untuk mengubah ukuran jendela.

Properti CaptionHeight menentukan area yang tidak terlihat di bagian atas jendela yang memungkinkan perilaku sistem yang biasanya terkait dengan bilah judul. Perilaku ini meliputi: klik dan seret untuk memindahkan jendela, klik dua kali untuk memaksimalkan jendela, dan klik kanan untuk menampilkan menu sistem.

Batas pengubahan ukuran dan area caption tidak memiliki elemen visual; mereka hanya menentukan area yang merespons input dan mengaktifkan perilaku jendela yang disediakan sistem standar.

Properti CornerRadius menentukan jumlah sudut jendela dibulatkan. Properti ini tidak berpengaruh jika bingkai kaca diaktifkan untuk jendela.

Properti GlassFrameThickness menentukan lebar bingkai kaca di sekitar jendela. Secara default, ia menggunakan nilai sistem yang ditentukan oleh WindowNonClientFrameThickness properti untuk meniru tampilan jendela standar. Saat bingkai kaca digunakan, tombol caption untuk Meminimalkan, Memaksimalkan, dan Menutup terlihat dan interaktif. Aplikasi ini bertanggung jawab untuk menampilkan ikon aplikasi dan teks caption. Anda dapat mengatur GlassFrameThickness properti untuk membuat bingkai kaca lebih lebar atau lebih sempit dari default.

Perhatian

Ukuran tombol caption tidak berubah saat GlassFrameThickness properti diubah. Jika tinggi bagian atas bingkai kaca kurang dari tinggi tombol caption, tombol caption tidak akan sepenuhnya terlihat.

Untuk membuat jendela kustom yang tidak memiliki bingkai kaca, atur GlassFrameThickness properti ke nilai seragam 0. Ini akan menonaktifkan dan menyembunyikan tombol caption standar.

Untuk memperluas bingkai kaca untuk menutupi seluruh jendela, atur GlassFrameThickness properti ke nilai negatif di sisi mana pun. GlassFrameThickness Ketika properti diatur ke nilai negatif untuk sisi mana pun, nilai yang dikoersi akan sama dengan GlassFrameCompleteThickness.

Catatan

Aero adalah serangkaian peningkatan visual untuk tampilan dan fungsionalitas desktop Windows yang diperkenalkan di Windows Vista. Salah satu fitur Aero yang lebih jelas secara visual adalah batas jendela kaca yang tembus. Windows Aero diaktifkan oleh fitur komposisi desktop Desktop Window Manager (DWM).

Efek kaca Windows Aero tidak didukung pada semua sistem operasi, dan dapat dinonaktifkan pada sistem operasi yang didukung. Jika Windows Aero tidak tersedia, bingkai kaca tidak akan ditampilkan terlepas dari GlassFrameThickness nilai properti. Area batas yang ditentukan oleh properti ini akan tampak hitam sebagai gantinya. IsGlassEnabled Periksa properti untuk memverifikasi bahwa efek kaca Windows Aero tersedia. Jika efek kaca tidak tersedia, Anda harus menyediakan gaya jendela alternatif yang tidak menggunakan bingkai kaca atau menggunakan jendela standar dengan mengatur gaya jendela ke null.

Anda memperluas konten WPF ke bingkai jendela dengan menentukan ControlTemplate yang menentukan tampilan dan perilaku konten bingkai. Anda mengatur TargetType controlTemplate ke jenis jendela yang Anda kustomisasi.

<ControlTemplate TargetType="{x:Type local:MainWindow}">  

Secara default, bagian dari elemen visual apa pun yang berada di dalam area non-klien jendela tidak interaktif. Untuk mengaktifkan elemen interaktif di area non-klien, lampirkan properti terlampir WindowsChrome.IsHitTestVisibleInChrome ke elemen dan atur ke true.

Markup XAML berikut menunjukkan elemen utama yang diperlukan untuk menyesuaikan jendela menggunakan kelas WindowChrome.

<Style x:Key="StandardStyle" TargetType="{x:Type local:MainWindow}">  
    <Setter Property="shell:WindowChrome.WindowChrome">  
        <Setter.Value>  
            <shell:WindowChrome />  
        </Setter.Value>  
    </Setter>  
    <Setter Property="Template">  
        <Setter.Value>  
            <ControlTemplate TargetType="{x:Type local:MainWindow}">  
                <Grid>  
                    <Border Background="White"  
                            Margin="{Binding Source={x:Static shell:SystemParameters2.Current}, Path=WindowNonClientFrameThickness}">  
                        <ContentPresenter Content="{TemplateBinding Content}" />  
                    </Border>  
                    <TextBlock Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Title}"   
                               VerticalAlignment="Top" HorizontalAlignment="Left"   
                               Margin="36,8,0,0"/>  
                    <Image Source="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Icon}"  
                           VerticalAlignment="Top" HorizontalAlignment="Left"  
                           Margin="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(shell:WindowChrome.WindowChrome).ResizeBorderThickness}"   
                           Width="{Binding Source={x:Static shell:SystemParameters2.Current}, Path=SmallIconSize.Width}"  
                           shell:WindowChrome.IsHitTestVisibleInChrome="True"/>  
                </Grid>  
            </ControlTemplate>  
        </Setter.Value>  
    </Setter>  
</Style>  

Setter pertama melampirkan WindowChrome ke jendela. Ini menggunakan semua nilai default untuk properti WindowChrome, yang membuat jendela terlihat seperti jendela standar.

<Setter Property="shell:WindowChrome.WindowChrome">  
    <Setter.Value>  
        <shell:WindowChrome />  
    </Setter.Value>  
</Setter>  

Templat jendela harus menentukan penyaji konten untuk menampilkan konten jendela yang ditentukan dalam aplikasi Anda. Secara default, kelas WindowChrome memperluas area klien untuk mencakup batas non-klien. Untuk mengungkap bingkai kaca, Anda perlu menentukan margin di sekitar ContentPresenter. Markup ini menentukan batas dengan latar belakang putih di sekitar penyaji konten untuk meniru tampilan jendela standar. Ini juga menentukan margin yang terikat ke properti WindowNonClientFrameThickness, yang mendapatkan lebar sistem default untuk bingkai.

<Border Background="White"  
    Margin="{Binding Source={x:Static shell:SystemParameters2.Current}, Path=WindowNonClientFrameThickness}">  
    <ContentPresenter Content="{TemplateBinding Content}" />  
</Border>  

Ikon dan judul aplikasi tidak ditampilkan oleh kelas WindowChrome; mereka harus ditambahkan ke batas sebagai konten kustom. XAML berikut menambahkan gambar dan blok teks untuk menampilkan ikon dan judul. Kedua elemen terikat ke properti yang sesuai pada jendela. Lebar gambar terikat ke lebar SmallIconSize, yang mendapatkan ukuran sistem default untuk ikon. Properti terlampir IsHitTestVisibleInChrome diatur pada gambar sehingga dapat menerima peristiwa mouse.

<Image Source="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Icon}"  
       VerticalAlignment="Top" HorizontalAlignment="Left"  
       Margin="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(shell:WindowChrome.WindowChrome).ResizeBorderThickness}"   
       Width="{Binding Source={x:Static shell:SystemParameters2.Current}, Path=SmallIconSize.Width}"  
       shell:WindowChrome.IsHitTestVisibleInChrome="True"/>  

<TextBlock Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Title}"   
           VerticalAlignment="Top" HorizontalAlignment="Left"   
           Margin="36,8,0,0"/>  

Konstruktor

WindowChrome()

Menginisialisasi instans baru kelas WindowChrome.

Bidang

CaptionHeightProperty

CaptionHeight Mengidentifikasi properti dependensi.

CornerRadiusProperty

CornerRadius Mengidentifikasi properti dependensi.

GlassFrameThicknessProperty

GlassFrameThickness Mengidentifikasi properti dependensi.

IsHitTestVisibleInChromeProperty

IsHitTestVisibleInChrome Mengidentifikasi properti dependensi.

NonClientFrameEdgesProperty

NonClientFrameEdges Mengidentifikasi properti dependensi.

ResizeBorderThicknessProperty

ResizeBorderThickness Mengidentifikasi properti dependensi.

ResizeGripDirectionProperty

ResizeGripDirection Mengidentifikasi properti dependensi.

UseAeroCaptionButtonsProperty

UseAeroCaptionButtons Mengidentifikasi properti dependensi.

WindowChromeProperty

WindowChrome Mengidentifikasi properti dependensi.

Properti

CanFreeze

Mendapatkan nilai yang menunjukkan apakah objek dapat dibuat tidak dapat dimodifikasi.

(Diperoleh dari Freezable)
CaptionHeight

Mendapatkan atau mengatur tinggi area caption di bagian atas jendela.

CornerRadius

Mendapatkan atau menetapkan nilai yang menunjukkan jumlah sudut jendela dibulatkan.

DependencyObjectType

Mendapatkan yang membungkus jenis CLR dari instans DependencyObjectType ini.

(Diperoleh dari DependencyObject)
Dispatcher

Dispatcher Mendapatkan ini DispatcherObject dikaitkan dengan.

(Diperoleh dari DispatcherObject)
GlassFrameCompleteThickness

Mendapatkan ketebalan seragam -1.

GlassFrameThickness

Mendapatkan atau menetapkan nilai yang menunjukkan lebar batas kaca di sekitar jendela.

IsFrozen

Mendapatkan nilai yang menunjukkan apakah objek saat ini dapat dimodifikasi.

(Diperoleh dari Freezable)
IsSealed

Mendapatkan nilai yang menunjukkan apakah instans ini saat ini disegel (baca-saja).

(Diperoleh dari DependencyObject)
NonClientFrameEdges

Mendapatkan atau menetapkan nilai yang menunjukkan tepi bingkai jendela mana yang tidak dimiliki oleh klien.

ResizeBorderThickness

Mendapatkan atau mengatur nilai yang menunjukkan lebar batas yang digunakan untuk mengubah ukuran jendela.

UseAeroCaptionButtons

Mendapatkan atau menetapkan nilai yang menunjukkan apakah pengujian klik diaktifkan pada tombol caption Windows Aero.

Properti yang Terlampir

IsHitTestVisibleInChrome

Mewakili objek yang menjelaskan kustomisasi ke area non-klien jendela.

ResizeGripDirection

Mewakili objek yang menjelaskan kustomisasi ke area non-klien jendela.

WindowChrome

Mendapatkan atau mengatur instans WindowChrome yang dilampirkan ke jendela.

Metode

CheckAccess()

Menentukan apakah utas panggilan memiliki akses ke ini DispatcherObject.

(Diperoleh dari DispatcherObject)
ClearValue(DependencyProperty)

Menghapus nilai lokal properti. Properti yang akan dibersihkan ditentukan oleh DependencyProperty pengidentifikasi.

(Diperoleh dari DependencyObject)
ClearValue(DependencyPropertyKey)

Menghapus nilai lokal properti baca-saja. Properti yang akan dibersihkan ditentukan oleh DependencyPropertyKey.

(Diperoleh dari DependencyObject)
Clone()

Membuat klon yang dapat dimodifikasi dari Freezable, membuat salinan mendalam dari nilai objek. Saat menyalin properti dependensi objek, metode ini menyalin ekspresi (yang mungkin tidak lagi diselesaikan) tetapi bukan animasi atau nilainya saat ini.

(Diperoleh dari Freezable)
CloneCore(Freezable)

Menjadikan instans sebagai kloning (salinan mendalam) dari yang ditentukan Freezable menggunakan nilai properti dasar (non-animasi).

(Diperoleh dari Freezable)
CloneCurrentValue()

Membuat kloning yang dapat dimodifikasi (salinan mendalam) dari Freezable menggunakan nilainya saat ini.

(Diperoleh dari Freezable)
CloneCurrentValueCore(Freezable)

Menjadikan instans sebagai klon yang dapat dimodifikasi (salinan mendalam) dari yang ditentukan Freezable menggunakan nilai properti saat ini.

(Diperoleh dari Freezable)
CoerceValue(DependencyProperty)

Memaksakan nilai properti dependensi yang ditentukan. Ini dicapai dengan memanggil fungsi apa pun CoerceValueCallback yang ditentukan dalam metadata properti untuk properti dependensi seperti yang ada pada panggilan DependencyObject.

(Diperoleh dari DependencyObject)
CreateInstance()

Menginisialisasi instans baru kelas Freezable.

(Diperoleh dari Freezable)
CreateInstanceCore()

Membuat instans WindowChrome baru kelas .

Equals(Object)

Menentukan apakah yang disediakan DependencyObject setara dengan saat ini DependencyObject.

(Diperoleh dari DependencyObject)
Freeze()

Membuat objek saat ini tidak dapat dimodifikasi dan mengatur propertinya IsFrozen ke true.

(Diperoleh dari Freezable)
FreezeCore(Boolean)

Freezable Membuat objek tidak dapat dimodifikasi atau menguji apakah dapat dibuat tidak dapat dimodifikasi.

(Diperoleh dari Freezable)
GetAsFrozen()

Membuat salinan beku dari Freezable, menggunakan nilai properti dasar (non-animasi). Karena salinan dibekukan, sub-objek beku apa pun disalin oleh referensi.

(Diperoleh dari Freezable)
GetAsFrozenCore(Freezable)

Menjadikan instans sebagai klon beku dari yang ditentukan Freezable menggunakan nilai properti dasar (non-animasi).

(Diperoleh dari Freezable)
GetCurrentValueAsFrozen()

Membuat salinan beku dari Freezable menggunakan nilai properti saat ini. Karena salinan dibekukan, sub-objek beku apa pun disalin oleh referensi.

(Diperoleh dari Freezable)
GetCurrentValueAsFrozenCore(Freezable)

Menjadikan instans saat ini sebagai klon beku dari yang ditentukan Freezable. Jika objek memiliki properti dependensi animasi, nilai animasinya saat ini akan disalin.

(Diperoleh dari Freezable)
GetHashCode()

Mendapatkan kode hash untuk ini DependencyObject.

(Diperoleh dari DependencyObject)
GetIsHitTestVisibleInChrome(IInputElement)

Mendapatkan nilai IsHitTestVisibleInChrome properti terlampir dari elemen input yang ditentukan.

GetLocalValueEnumerator()

Membuat enumerator khusus untuk menentukan properti dependensi mana yang memiliki nilai yang ditetapkan secara lokal pada ini DependencyObject.

(Diperoleh dari DependencyObject)
GetResizeGripDirection(IInputElement)

Mendapatkan nilai ResizeGripDirection properti terlampir dari elemen input yang ditentukan.

GetType()

Mendapatkan dari instans Type saat ini.

(Diperoleh dari Object)
GetValue(DependencyProperty)

Mengembalikan nilai efektif properti dependensi saat ini pada instans ini dari DependencyObject.

(Diperoleh dari DependencyObject)
GetWindowChrome(Window)

Mendapatkan nilai WindowChrome properti terlampir dari yang ditentukan Window.

InvalidateProperty(DependencyProperty)

Mengevaluasi kembali nilai efektif untuk properti dependensi yang ditentukan.

(Diperoleh dari DependencyObject)
MemberwiseClone()

Membuat salinan dangkal dari saat ini Object.

(Diperoleh dari Object)
OnChanged()

Dipanggil ketika objek saat ini Freezable dimodifikasi.

(Diperoleh dari Freezable)
OnFreezablePropertyChanged(DependencyObject, DependencyObject)

Memastikan bahwa penunjuk konteks yang sesuai ditetapkan untuk DependencyObjectType anggota data yang baru saja ditetapkan.

(Diperoleh dari Freezable)
OnFreezablePropertyChanged(DependencyObject, DependencyObject, DependencyProperty)

Anggota ini mendukung infrastruktur Windows Presentation Foundation (WPF) dan tidak dimaksudkan untuk digunakan langsung dari kode Anda.

(Diperoleh dari Freezable)
OnPropertyChanged(DependencyPropertyChangedEventArgs)

Mengambil alih DependencyObject implementasi OnPropertyChanged(DependencyPropertyChangedEventArgs) untuk juga memanggil penangan apa pun Changed sebagai respons terhadap properti dependensi yang berubah dari jenis Freezable.

(Diperoleh dari Freezable)
ReadLocalValue(DependencyProperty)

Mengembalikan nilai lokal properti dependensi, jika ada.

(Diperoleh dari DependencyObject)
ReadPreamble()

Memastikan bahwa Freezable sedang diakses dari utas yang valid. Pewaris Freezable harus memanggil metode ini di awal API apa pun yang membaca anggota data yang bukan properti dependensi.

(Diperoleh dari Freezable)
SetCurrentValue(DependencyProperty, Object)

Mengatur nilai properti dependensi tanpa mengubah sumber nilainya.

(Diperoleh dari DependencyObject)
SetIsHitTestVisibleInChrome(IInputElement, Boolean)

Mengatur nilai IsHitTestVisibleInChrome properti terlampir pada elemen input yang ditentukan.

SetResizeGripDirection(IInputElement, ResizeGripDirection)

Mengatur nilai ResizeGripDirection properti terlampir pada elemen input yang ditentukan.

SetValue(DependencyProperty, Object)

Mengatur nilai lokal properti dependensi, yang ditentukan oleh pengidentifikasi properti dependensinya.

(Diperoleh dari DependencyObject)
SetValue(DependencyPropertyKey, Object)

Mengatur nilai lokal properti dependensi baca-saja, yang ditentukan oleh DependencyPropertyKey pengidentifikasi properti dependensi.

(Diperoleh dari DependencyObject)
SetWindowChrome(Window, WindowChrome)

Mengatur nilai WindowChrome properti terlampir pada yang ditentukan Window.

ShouldSerializeProperty(DependencyProperty)

Mengembalikan nilai yang menunjukkan apakah proses serialisasi harus menserialisasikan nilai untuk properti dependensi yang disediakan.

(Diperoleh dari DependencyObject)
ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)
VerifyAccess()

Memberlakukan bahwa utas panggilan memiliki akses ke ini DispatcherObject.

(Diperoleh dari DispatcherObject)
WritePostscript()

Menaikkan Changed peristiwa untuk Freezable dan memanggil metodenya OnChanged() . Kelas yang berasal dari Freezable harus memanggil metode ini di akhir API apa pun yang memodifikasi anggota kelas yang tidak disimpan sebagai properti dependensi.

(Diperoleh dari Freezable)
WritePreamble()

Memverifikasi bahwa Freezable tidak dibekukan dan sedang diakses dari konteks utas yang valid. Freezable pewaris harus memanggil metode ini di awal API apa pun yang menulis ke anggota data yang bukan properti dependensi.

(Diperoleh dari Freezable)

Acara

Changed

Terjadi ketika Freezable atau objek yang dikandungnya dimodifikasi.

(Diperoleh dari Freezable)

Berlaku untuk