WPF Windows Genel Bakış
Kullanıcıların etkileşimde Windows Presentation Foundation (WPF) bağımsız uygulamalar aracılığıyla windows. Veri visualizes ve verilerle etkileşimi sağlamak kullanıcıların ana içeriği için bir pencere birincil amacı budur. Tek başına WPF uygulamalar sağlamak, kendi windows kullanarak Window sınıfa Bu konuya giriş yapar Window önce kapsayan temelleri oluşturma ve yönetme windows tek başına uygulamaları.
Not |
---|
Tarayıcı barındırılan WPF uygulamaları, gibi XAML browser applications (XBAPs) ve gevşek Extensible Application Markup Language (XAML) sayfaları, yoksa sağlar, kendi windows.Bunun yerine, Windows tarafından sağlanan barındırdığı Windows Internet Explorer.See WPF XAML Tarayıcı Uygulamalarına Genel Bakış. |
Bu konu aşağıdaki bölümleri içerir.
- Pencere sınıfı
- Bir pencere uygulama
- Bir pencere tanımı MSBuild için yapılandırma
- Window Lifetime
- Pencere konumu
- Pencere boyutu
- Özellikler boyutlandırma için öncelik sırası
- Pencere durumu
- Pencere görünümü
- Güvenlik konuları
- Windows diğer türleri
- İlgili Konular
Pencere sınıfı
Pencere kendisini oluşturan bölümleri aşağıdaki şekilde gösterilmiştir.
Pencere iki alana ayrılır: olmayan istemci ve istemci alanları.
Olmayan istemci alanı tarafından uygulanan bir WPF ve aşağıdakiler dahil çoğu windows için ortak olan bir pencere bölümlerini içerir:
Kenarlık.
Başlık çubuğu.
Bir simge.
Ekranı Kapla, simge durumuna küçült ve düğmelerini geri yükleme.
Kapat düğmesi.
En aza indirmek, kullanıcıların menü öğeleri içeren bir sistem menüsü en üst düzeye çıkarmak, geri yükleme, taşıma, yeniden boyutlandırma ve pencereyi kapatmak.
İstemci alanı bir pencerenin olmayan istemci alanının içinde kalan alandan ve geliştiriciler tarafından menü çubukları, araç çubukları ve denetimleri gibi uygulamaya özgü içerik eklemek için kullanılır.
De WPF, bir pencere ile kapsüllenir Window , aşağıdakileri yapmak için kullandığınız sınıf:
Bir pencere görüntüler.
Boyut, konum ve görünüm penceresinin yapılandırın.
Uygulamaya özgü içeriği barındırır.
Pencere sonu yönetin.
Bir pencere uygulama
Tipik bir pencere uygulaması hem görünüm hem de davranış oluşur nerede Görünüm bir pencere kullanıcılara nasıl görüneceğini tanımlar ve davranış bir pencere ile kullanıcıların etkileşimli olarak çalışma yöntemini tanımlar. De WPF, görünüm uygulayabilir ve davranış penceresini kullanarak ya da kodu veya XAML işaretleme.
Genel olarak, ancak, bir pencere görünümünü kullanarak uygulanan XAML işaretleme ve davranış gerçekleştirilir kullanarak arka planda, gösterildiği gibi aşağıdaki örnek.
<Window
xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
x:Class="SDKSample.MarkupAndCodeBehindWindow">
<!-- Client area (for content) -->
</Window>
Imports System.Windows ' Window
Namespace SDKSample
Partial Public Class MarkupAndCodeBehindWindow
Inherits Window
Public Sub New()
InitializeComponent()
End Sub
End Class
End Namespace
using System.Windows; // Window
namespace SDKSample
{
public partial class MarkupAndCodeBehindWindow : Window
{
public MarkupAndCodeBehindWindow()
{
InitializeComponent();
}
}
}
Etkinleştirmek için bir XAML Biçimlendirme dosyası ve birlikte çalışmak için arkadaki kod dosyası, aşağıdaki gereklidir:
İşaretleme, de Window öğesi içermelidir x:Class özniteliği. Ne zaman uygulama üretilmiştir, varlığını x:Class biçimleme dosyası neden olan Microsoft build engine (MSBuild) oluşturmak için bir partial , türetir sınıfı Window ve tarafından belirtilen ada sahip x:Class özniteliği. Bu eklenmesini gerektirir bir XML ad alanı bildirimi için XAML şema (xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"). Üretilen partial Implements sınıfı InitializeComponent yöntemi, olayları kaydetmek ve işaretleme uygulanan özelliklerini ayarlamak için verilir,
Arkadaki kod içinde sınıf olmalıdır bir partial sınıfı tarafından belirtilen adda x:Class gerekir özniteliğinde işaretleme ve türetmek Window. Böylece, arka planda dosya ile ilişkili partial uygulama oluþturulurken biçimleme dosyası için oluşturulan sınıf (bkz: WPF Uygulaması Oluşturma (WPF)).
Arka planda, de Window class çağıran bir kurucu uygulamak gerekir InitializeComponent yöntemi. InitializeComponentuygulanan biçimlendirme tarafından dosya oluşturulan partial sınıfı olayları kaydetmek ve işaretleme tanımlanan özellikleri ayarlamak için
Not |
---|
Eklediğinizde, yeni bir Window kullanarak projenize Microsoft Visual Studio, Window kullanarak biçimlendirme ve arka planda, gerçekleştirilir ve işaretleme ve arkadaki kod dosyaları olarak arasındaki ilişkiyi oluşturmak için gerekli yapılandırma içeriraçıklanan burada. |
Bir yerde bu yapılandırmayla penceresinde görünümünü tanımlayan üzerinde yoğunlaşabilir XAML işaretleme ve davranışını kod uygulama-arkada. Aşağıdaki örnek uygulanan bir düğme içeren bir pencere gösterir XAML işaretleme ve düğme için bir olay işleyicisi Click olay, kod içinde uygulanan-arkada.
<Window
xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
x:Class="SDKSample.MarkupAndCodeBehindWindow">
<!-- Client area (for content) -->
<Button Click="button_Click">Click This Button</Button>
</Window>
Imports System.Windows
Namespace SDKSample
Partial Public Class MarkupAndCodeBehindWindow
Inherits Window
Public Sub New()
InitializeComponent()
End Sub
Private Sub button_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
MessageBox.Show("Button was clicked.")
End Sub
End Class
End Namespace
using System.Windows;
namespace SDKSample
{
public partial class MarkupAndCodeBehindWindow : Window
{
public MarkupAndCodeBehindWindow()
{
InitializeComponent();
}
void button_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("Button was clicked.");
}
}
}
Bir pencere tanımı MSBuild için yapılandırma
Pencerenizin uygulamak nasıl nasıl için yapılandırıldığını belirler MSBuild. Her ikisi de kullanılarak tanımlanan penceresine XAML işaretleme ve arkadaki kod:
XAMLBiçimlendirme dosyaları olarak yapılandırılmış olan MSBuild Page öğeleri.
Arkadaki kod dosyaları olarak yapılandırılmış olan MSBuild Compile öğeleri.
Bu aşağıdaki gösterilir MSBuild Proje dosyası.
<Project ... xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
...
<Page Include="MarkupAndCodeBehindWindow.xaml" />
<Compile Include=" MarkupAndCodeBehindWindow.xaml.cs" />
...
</Project>
Bina hakkında bilgi WPF Bkz: uygulamaları, WPF Uygulaması Oluşturma (WPF).
Window Lifetime
Herhangi bir sınıf ile bir pencere ilk örneği başlatıldığında başlayan bir yaşam olması gibi sonra onu açılmış, etkinleştirilir ve devre dışı ve sonuçta kapalı.
Bu bölüm aşağıdaki alt bölümleri içerir.
- Bir pencere açma
- Penceresini etkinleştirme
- Bir pencereyi kapatmak
- Pencere yaşam olayları
Bir pencere açma
Bir pencere açmak için aşağıdaki örnekte gösterildiği bir örneğini, önce oluşturmanız.
<Application
xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
x:Class="SDKSample.App"
Startup="app_Startup">
</Application>
Imports System.Windows
Namespace SDKSample
Partial Public Class App
Inherits Application
Private Sub app_Startup(ByVal sender As Object, ByVal e As StartupEventArgs)
' Create a window
Dim window As New MarkupAndCodeBehindWindow()
' Open a window
window.Show()
End Sub
End Class
End Namespace
using System.Windows;
namespace SDKSample
{
public partial class App : Application
{
void app_Startup(object sender, StartupEventArgs e)
{
// Create a window
MarkupAndCodeBehindWindow window = new MarkupAndCodeBehindWindow();
// Open a window
window.Show();
}
}
}
Bu örnekte, MarkupAndCodeBehindWindow oluştuğu uygulama başladığında örneği, Startup olay ortaya.
Bir pencere örneği oluşturulduğunda bir referansı tarafından yönetilen windows listesine otomatik olarak eklenir Application nesne (bkz: Application.Windows). Ayrıca örneği oluşturulmak üzere ilk penceresinde varsayılan olarak ayarlanır Application olarak ana uygulama penceresine (bkz: Application.MainWindow).
Pencere, son olarak çağırarak açılırsa Show yöntemi; Sonuç, aşağıdaki şekilde gösterilmiştir.
Çağırarak açılır pencere Show bir geçici penceresi, başka bir deyişle, uygulama, çalışır bir modda aynı uygulama Windows'u diğer kullanıcılara izin verir
Not |
---|
ShowDialogaçık pencereleri iletişim kutuları gibi kalıcı olarak adlandırılır.See İletişim Kutularına Genel Bakış for more information. |
Zaman Show olan kullanıcı girdi. almasına izin veren bir altyapı kurmayı gösterilmeden önce adlı bir pencere başlatma işini gerçekleştiren Pencerede başlatıldığında, SourceInitialized olay harekete geçirilen ve pencere gösterilmeden.
Bir kısayol olarak StartupUri ilk penceresinde otomatik olarak, açılan belirtmek için ayarlanabilirbir uygulama başlatır.
<Application
xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
x:Class="SDKSample.App"
StartupUri="PlainWindow.xaml" />
Uygulama başladığında, değeri tarafından belirtilen pencere StartupUri modelessly; açıldığında dahili olarak çağırarak pencere açılırsa, Show yöntemi.
Pencere sahipliği
Kullanılarak açılan bir pencere Show yöntemi; oluşturulan pencere ile örtülü bir ilişkisi yok Kullanıcılar, yani iki pencereden şunları yapabilirsiniz ya da pencere ile diğer bağımsız olarak etkileşimde bulunabilirsiniz:
Diğer Kapak (pencerelerden birine sahip olmadığı sürece kendi Topmost özelliðini true).
, Diğer etkilemeden kaplayan ve geri yüklenen küçültülmesine.
Bazı windows bunları açılır pencere ile ilişki gerektirir. Örneğin, bir Integrated Development Environment (IDE) uygulama özelliği windows ve araç pencereleri, normal bir davranıştır, onları oluşturan pencere kapsayacak şekilde açılabilir. Ayrıca, gibi windows her zaman kapatın, en aza indirmek, en üst düzeye çıkarmak ve onları oluşturan pencere konser geri. Tek bir pencerede yaparak böyle bir ilişki kurulabilir kendi başka ve ayarlayarak elde etmiştiniz Owner özelliği Pencere sahibi bir başvuru ile sahip pencereyi. This is shown in the following example.
' Create a window and make this window its owner
Dim ownedWindow As New Window()
ownedWindow.Owner = Me
ownedWindow.Show()
// Create a window and make this window its owner
Window ownedWindow = new Window();
ownedWindow.Owner = this;
ownedWindow.Show();
Sahiplik kurulduktan sonra:
Sahip olunan pencere sahibi penceresi değerini inceleyerek başvurabilir, Owner özelliği.
Sahibi olan değerini inceleyerek tüm pencereleri sahip pencereyi bulabilir, OwnedWindows özelliği.
Penceresini etkinleştirme önleme
Burada windows konuşma pencerelerinde Internet messenger stili uygulama veya bir e-posta uygulamasının bildirimi windows gibi gösterilen etkinleştirilmelidir değil senaryo vardır.
Uygulamanızda gösterilen etkinleştirilmesi gerekir bir pencere varsa ayarlayabilirsiniz, ShowActivated özelliğine false önce edinilecek Show yöntemi için ilk zaman. Sonuç olarak:
Pencere etkinleştirilmedi.
Pencere Activated olay ortaya değil.
Etkin pencere etkin olarak kalır.
Kullanıcı istemci veya olmayan istemci alanı tıklatarak etkinleştirir hemen penceresinde, ancak etkin hale. Bu durumda:
Pencerede etkinleştirilir.
Pencere Activated olay ortaya.
Daha önce etkin pencere devre dışı bırakılır.
Pencere Deactivated ve Activated olaylar sonradan ortaya gibi beklenen yanıt olarak kullanıcı eylemleri.
Penceresini etkinleştirme
Pencere ilk açıldığında etkin pencerenin olur (ile gösterildiği sürece ShowActivated için false). Etkin pencere şu anda tuş vuruşları ve fare tıklatmaları gibi kullanıcı girişini yakalama penceresi. Bir pencere etkin hale geldiğinde harekete geçiren Activated olay.
Not |
---|
Pencere ilk açıldığında, Loaded ve ContentRendered olayların ardından yükseltilmiş Activated olay ortaya.Bunu aklýnýzda bir pencere etkin açıldığında düşünülebilir ContentRendered ortaya çıkar. |
Bir pencere etkin olduktan sonra bir kullanıcı başka bir pencerede aynı uygulamayı etkinleştirmek veya başka bir uygulamayı etkinleştirmek. Başardığınızda, şu anda etkin pencereyi etkinliği haline gelir ve harekete geçiren Deactivated olay. Kullanıcı şu anda devre dışı bırakılan bir pencere seçtiğinde, benzer şekilde, pencere yeniden etkin duruma gelir ve Activated ortaya çıkar.
İşlemek için bir ortak nedeni Activated ve Deactivated olan etkinleştirmek ve devre dışı bırakma işlevselliği, yalnızca çalıştırabilirsiniz olduğunda bir pencere etkin. Örneğin, bazı windows sabit kullanıcı girdisi veya oyunlar ve video oynatıcı gibi dikkat gerektiren etkileşimli içerik görüntüler. Aşağıdaki örnekte nasıl yapılacağını gösteren basitleştirilmiş bir video oynatıcısı olan Activated ve Deactivated oluşturmak bu davranışı.
<Window
xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
x:Class="SDKSample.CustomMediaPlayerWindow"
Activated="window_Activated"
Deactivated="window_Deactivated">
<!-- Media Player -->
<MediaElement
Name="mediaElement"
Stretch="Fill"
LoadedBehavior="Manual"
Source="numbers.wmv" />
</Window>
Imports System ' EventArgs
Imports System.Windows ' Window
Namespace SDKSample
Partial Public Class CustomMediaPlayerWindow
Inherits Window
Public Sub New()
InitializeComponent()
End Sub
Private Sub window_Activated(ByVal sender As Object, ByVal e As EventArgs)
' Recommence playing media if window is activated
Me.mediaElement.Play()
End Sub
Private Sub window_Deactivated(ByVal sender As Object, ByVal e As EventArgs)
' Pause playing if media is being played and window is deactivated
Me.mediaElement.Pause()
End Sub
End Class
End Namespace
using System; // EventArgs
using System.Windows; // Window
namespace SDKSample
{
public partial class CustomMediaPlayerWindow : Window
{
public CustomMediaPlayerWindow()
{
InitializeComponent();
}
void window_Activated(object sender, EventArgs e)
{
// Recommence playing media if window is activated
this.mediaElement.Play();
}
void window_Deactivated(object sender, EventArgs e)
{
// Pause playing if media is being played and window is deactivated
this.mediaElement.Pause();
}
}
}
Bir pencere devre dışı bırakıldığında uygulamaları hala arka planda kod çalıştırabilir. Örneğin, bir posta istemcisi kullanıcı diğer uygulamaları kullanırken posta sunucusu yoklama devam edebilir. Ana pencere devre dışı durumdayken bu gibi uygulamalar genellikle farklı veya ek davranış sağlar. Posta programı açısından bu hem gelen kutusuna yeni posta öğesi ekleme hem de sistem tepsisine bir bildirim simgesi ekleme gelebilir. Posta pencere inceleyerek belirlenebilir etkin olmadığında bildirim simgesi yalnızca görüntülenmesi IsActive özelliği.
Bir arka plan görevi tamamlar, bir pencere kullanıcı daha gerçekleþtirilmesinin çağırarak uyarmak isteyebilirsiniz Activate yöntemi. Kullanıcı ile etkileşim, başka bir uygulama ne zaman etkin Activate olarak adlandırılan, pencerenin görev çubuğu düğmesi yanıp sönen. Bir kullanıcının geçerli uygulamayla etkileşim, arama Activate Getir penceresi ön planda.
Not |
---|
Uygulama kapsamı etkinleştirme'yi kullanan işleyebilir Application.Activated ve Application.Deactivated olayları. |
Bir pencereyi kapatmak
Ömrü boyunca bir pencere, bir son kullanıcı kapattığında yakında başlar. Aşağıdakiler de dahil olmayan istemci alanında öğeleri kullanarak bir pencere kapatılabilir:
Kapat madde Sistem menü.
alt + F4 tuşlarına basıp.
Tuşuna basarak Kapat düğme.
Bir pencereyi kapatmak için istemci alanına ek mekanizmaları daha fazla yaygın olan şunlardır sağlayabilir:
Bir Çıkış , madde Dosya ana uygulama windows için genellikle menü.
A Kapat , madde Dosya menüsünde, genellikle ikincil uygulama penceresi.
A İptal düğmesi, genellikle kalıcı bir iletişim kutusu.
A Kapat düğmesi, genellikle kalıcı olmayan bir iletişim kutusu.
Bu özel mekanizmalar birine yanıt bir pencereyi kapatmak için aramanız gereken Close yöntemi. Aşağıdaki örnek seçerek bir pencereyi kapatmak için yeteneği uygulayan Çıkış üzerinde Dosya menü.
<Window
xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
x:Class="SDKSample.WindowWithFileExit">
<Menu>
<MenuItem Header="_File">
<MenuItem Header="E_xit" Click="fileExitMenuItem_Click" />
</MenuItem>
</Menu>
</Window>
Imports System.Windows ' window, RoutedEventArgs
Namespace SDKSample
Partial Public Class WindowWithFileExit
Inherits System.Windows.Window
Public Sub New()
InitializeComponent()
End Sub
Private Sub fileExitMenuItem_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
' Close this window
Me.Close()
End Sub
End Class
End Namespace
using System.Windows; // window, RoutedEventArgs
namespace SDKSample
{
public partial class WindowWithFileExit : System.Windows.Window
{
public WindowWithFileExit()
{
InitializeComponent();
}
void fileExitMenuItem_Click(object sender, RoutedEventArgs e)
{
// Close this window
this.Close();
}
}
}
Bir pencereyi kapattığında iki olay yükseltir: Closing and Closed.
ClosingPencereyi kapatır ve kapanışı hangi pencere engellenebilir bir mekanizma sağlar önce oluşturulur. Pencere kapanışı önlemek için bir ortak pencerenin içeriği değiştirilmiş veriler içeriyorsa nedenidir. Bu durumda, Closing olay işleneceğini veri kirli olup olmadığını ve varsa bunu sormak kullanıcı mi devam ya da verileri kaydetmeden pencereyi kapatmayı iptal etmek için belirlemepencere kapanışı. Aşağıdaki örnek işleme önemli yönlerini gösterir Closing.
Imports System ' EventArgs
Imports System.ComponentModel ' CancelEventArgs
Imports System.Windows ' window
Namespace VisualBasic
Partial Public Class DataWindow
Inherits Window
' Is data dirty
Private isDataDirty As Boolean = False
...
Private Sub DataWindow_Closing(ByVal sender As Object, ByVal e As CancelEventArgs)
MessageBox.Show("Closing called")
' If data is dirty, notify user and ask for a response
If Me.isDataDirty Then
Dim msg As String = "Data is dirty. Close without saving?"
Dim result As MessageBoxResult = MessageBox.Show(msg, "Data App", MessageBoxButton.YesNo, MessageBoxImage.Warning)
If result = MessageBoxResult.No Then
' If user doesn't want to close, cancel closure
e.Cancel = True
End If
End If
End Sub
End Class
End Namespace
using System; // EventArgs
using System.ComponentModel; // CancelEventArgs
using System.Windows; // window
namespace CSharp
{
public partial class DataWindow : Window
{
// Is data dirty
bool isDataDirty = false;
...
void DataWindow_Closing(object sender, CancelEventArgs e)
{
MessageBox.Show("Closing called");
// If data is dirty, notify user and ask for a response
if (this.isDataDirty)
{
string msg = "Data is dirty. Close without saving?";
MessageBoxResult result =
MessageBox.Show(
msg,
"Data App",
MessageBoxButton.YesNo,
MessageBoxImage.Warning);
if (result == MessageBoxResult.No)
{
// If user doesn't want to close, cancel closure
e.Cancel = true;
}
}
}
}
}
Closing Olay işleyicisine geçirilir bir CancelEventArgs, hangi Implements Boolean Cancel özelliği için ayarlanan true önleme penceresini kapatma.
Closing Yapılmıyor, veya ele ancak iptal, penceresinin eder kapatılacak. Yalnızca bir pencere aslında kapanmadan önce Closed ortaya çıkar. Bu noktada, bir pencere kapatılmasını önlenemez.
Not |
---|
Uygulama otomatik olarak ne zaman ana uygulama penceresini kapatır kapatmaya yapılandırılabilir (bkz: MainWindow) veya son pencere kapanır.For details, see ShutdownMode. |
Bir pencere açık olmayan istemci ve istemci alanlarda sağlanan mekanizmalar aracılığıyla kapalı iken bir pencere de dolaylı olarak uygulamanın diğer bölümlerinde davranışı sonucu olarak kapatılabilir veya Windows, aşağıdaki gibi:
Kullanıcı oturumu kapattığında veya kapanıp Windows.
Bir pencerenin sahibi kapatır (bkz: Owner).
Ana uygulama penceresine kapatılır ve ShutdownMode olan OnMainWindowClose.
Shutdownolarak adlandırılır.
Not |
---|
Dosyayı kapattıktan sonra bir pencere açılamaz. |
Pencere yaşam olayları
Aşağıdaki resimde, bir pencere yaşam süresi asıl olay sırasını göstermektedir.
Yaşam etkinleştirme gösterilen bir pencere içinde asıl olay sırası aşağıda gösterilmiştir (ShowActivated ayarlanır false Pencere gösterilmeden önce).
Pencere konumu
Bir pencere açıkken, x ve y konumu olan Masaüstü boyutlarına göre. Bu konum inceleyerek belirlenebilir Left ve Top özellikleri, sýrasýyla. Pencere konumunu değiştirmek için bu özellikleri ayarlayabilirsiniz.
Başlangıç konumunu da belirtebilirsiniz bir Window , ilk göründüğünde ayarlayarak WindowStartupLocation özelliği aşağıdakilerden biri ile WindowStartupLocation numaralandırma değerleri:
Manual(varsayılan)
Başlangıç konumu olarak belirtilirse, Manualve Left ve Top Özellikler değil ayarlandı, Window sorar Windows bir konum in. görünmesi için
En üstteki Windows ve z-Sırası
X ve y konumu, bir pencere de sahip yanı sıra açısından diğer pencereleri dikey konumunu belirler z boyuttaki bir konuma sahiptir. Bu pencerenin z-sırası bilinir ve iki türü vardır: Normal z-sırası ve üstteki z-sırası. Bir pencere konumunu normal z-sırası olup, şu anda etkin olmadığı tarafından belirlenir. Varsayılan olarak, bir pencere içinde normal z-sırası bulunur. Bir pencere konumunu en üstteki z-sırası olup, şu anda etkin olmadığı tarafından ayrıca belirlenir. Ayrıca, en üstteki z-sırası, windows her zaman normal z ekseninde windows Yukarıda yer alır. Bir pencere ayarlayarak en üstteki z-sırası içinde bulunur, Topmost özelliğine true.
<Window
xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
Topmost="True">
...
</Window>
Her z-sırası içinde geçerli etkin pencere tüm diğer windows aynı z ekseninde görünür.
Pencere boyutu
Masaüstü bir konuma sahip yanı sıra bir pencere çeşitli genişlik ve yükseklik özelliklerini gibi birçok özelliği tarafından belirlenen bir boyutu vardır ve SizeToContent.
MinWidth, Width, ve MaxWidth genişlikleri, bir pencere, yaşam sırasında sahip olabilir ve aşağıdaki örnek. göründüğü gibi yapılandırıldığını aralığını yönetmek için kullanılır
<Window
xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
MinWidth="300" Width="400" MaxWidth="500">
...
</Window>
Pencere yüksekliği tarafından yönetilen MinHeight, Height, ve MaxHeightve aşağıdaki örnek. gösterildiği gibi yapılandırılmış
<Window
xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
MinHeight="300" Height="400" MaxHeight="500">
...
</Window>
Çeşitli değerler genişlik ve yükseklik değerleri aralığı belirtmek için genişlik ve yükseklik ilgili boyutu için belirtilen aralığı içinde herhangi bir yerde olması için yeniden boyutlandırılabilir penceresinin mümkündür. Geçerli genişliği ve yüksekliği algılamak için İnceleme ActualWidth ve ActualHeight, sırasıyla.
Genişlik ve yükseklik pencerenizin istediğiniz pencere boyutunu sığacak bir boyut için içerik, kullanabileceğiniz SizeToContent özelliği, aşağıdaki değerler vardır:
Manual. Etkisi (varsayılan).
Width. Her ikisi de ayarlamakla aynı etkiyi içerik genişliğine sığacak MinWidth ve MaxWidth genişliğine içeriği.
Height. Her ikisi de ayarlamakla aynı etkiyi içerik yüksekliği Sığdır MinHeight ve MaxHeight yüksekliğine içeriği.
WidthAndHeight. İçerik genişliği ve her ikisi de ayarlamakla aynı etkiyi yüksekliği Sığdır MinHeight ve MaxHeight içerik ve her iki ayar yüksekliğine MinWidth ve MaxWidth genişliğine içeriği.
Aşağıdaki kod, içerik hem dikey hem de yatay olarak, ilk olarak gösterilen zaman sığacak şekilde otomatik olarak boyutlandırır bir pencerede gösterilir.
<Window
xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
SizeToContent="WidthAndHeight">
...
</Window>
Özellikler boyutlandırma için öncelik sırası
Aslında, genişlik ve yükseklik için yeniden boyutlandırılabilir penceresinde aralığını tanımlamak için bir pencere çeşitli boyutlarda özelliklerini birleştirir. Geçerli aralık saklanır, emin olmak için Window Boyut özellikleri aşağıdaki siparişlerin değerlerini değerlendiriröncelik.
Yükseklik özellikleri:
Genişlik özellikleri:
Bunu, ile yönetilen büyütüldüğünde öncelik sırasına göre de pencere boyutunu belirleyebilirsiniz WindowState özelliği.
Pencere durumu
Yeniden boyutlandırılabilir penceresinde kullanım süresi boyunca, üç durumu olabilir: normal, simge durumuna küçültülmüş ve ekranı kaplaması sağlanabilir. Bir pencere ile bir normal bir pencerenin varsayılan durumu durumudur. Bu durumu içeren bir pencere taşımak ve yeniden boyutlandırılabilir olması durumunda, yeniden boyutlandırma tutamacı veya kenarlık kullanarak yeniden boyutlandırma kullanıcı sağlar.
Bir pencere ile bir Minimize durumu, görev çubuğu düğmesindeki daraltır ShowInTaskbar ayarlanır true; Aksi durumda olabilir ve masaüstünün sol alt köşesinde kendisini yeniden yerleştirir en küçük olası boyutuna daraltır. Ne tür bir simge durumuna küçültülmüş pencereyi kenarlık kullanarak yeniden boyutlandırılabilir veya görev çubuğunda gösterilen değil simge durumuna küçültülmüş bir pencereyi masaüstüne sürüklenebilir rağmen tutamacı, yeniden boyutlandırma.
Bir pencere ile bir ekranı durumu olacağı yalnızca kadar büyük olabilir, en büyük boyutuna genişletir, MaxWidth, MaxHeight, ve SizeToContent özellikleri dikte. Gibi simge durumuna küçültülmüş bir pencereyi, ekranı kaplayan bir pencereyi yeniden boyutlandırma tutamacı kullanarak veya kenarlığı sürükleyerek boyutlandırılamaz.
Not |
---|
Değerleri Top, Left, Width, ve Height Pencere özelliklerini her zaman temsil normal durum değerlerini bile pencere şu anda büyütülmediği veya zaman. |
Bir pencerenin durumu ayarlanarak yapılandırılabilir, WindowState özelliği, hangi olabilir aşağıdakilerden birini WindowState numaralandırma değerleri:
Aşağıdaki örnek, açıldığında, ekranı kaplamış olarak gösterilen bir pencere oluşturulması gösterilmiştir.
<Window
xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
WindowState="Maximized">
...
</Window>
Genel olarak, ayarlamalısınız WindowState yapılandırma başlangıç durumu penceresi. Yeniden boyutlandırılabilir penceresinde gösterilen sonra kullanıcılar, simge durumuna küçült basın, en üst düzeye çıkarmak ve pencere durumu değiştirmek için pencerenin başlık çubuğundaki düğmeleri geri yükleyebilirsiniz.
Pencere görünümü
Pencereye özgü içeriği, düğmeler, etiketler ve metin kutuları gibi ekleyerek istemci alanı pencerenin görünümünü değiştirin. İstemci olmayan alanı yapılandırmak için Window sağlayan çeşitli özellikleri kapsayan Icon pencerenin simgesi ayarlamak için ve Title ayarlamak, başlık.
Pencerenin yeniden boyutlandırma modu, pencere stili yapılandırarak istemci alan kenarlığını davranışını ve görünümünü de değiştirebilirsiniz ve masaüstü görev çubuğunda bir düğme olarak görünür olup olmadığı.
Bu bölüm aşağıdaki alt bölümleri içerir.
- Yeniden boyutlandırma modu
- Pencere stili
- Görev çubuğunun durum
Yeniden boyutlandırma modu
Bağlı WindowStyle özelliðini denetleyebilirsiniz nasıl (ve eğer) kullanıcılar yeniden boyutlandırmak pencere. Pencere stili seçimi mi kenarlığını fare ile sürükleyerek, kullanıcı pencerenin boyutunu değiştirebilirsiniz çalıştırılamadığını etkiler Minimize, Ekranı Kapla, ve yeniden boyutlandırma düğmeleri görünür olmayan istemci alanında, ve görünür, etkin.
Ayarlayarak bir pencere yeniden boyutlandırmasında yapılandırabilirsiniz, ResizeMode özelliği, hangi olabilir aşağıdakilerden birini ResizeMode numaralandırma değerleri:
CanResize(varsayılan)
Olduğu gibi WindowStyle, bir pencereyi yeniden boyutlandırma modunu değiştirme ömrü boyunca, yani olduğunu, büyük olasılıkla belirleyeceğim buradan sırasında düşüktür XAML işaretleme.
<Window
xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
ResizeMode="CanResizeWithGrip">
...
</Window>
Pencere ekranı olup olmadığını, algılayan Not simge durumuna küçültülmüş ya da inceleyerek geri WindowState özelliği.
Pencere stili
Bir pencere olmayan istemci alanından sergilenen kenarlık çoğu uygulamalar için uygundur. Ancak, burada farklı kenarlık türü için gerekli olan veya kenarlık yok penceresinin türüne bağlı olarak, gerekli olan koşullar vardır.
Bir pencere kenarlığını ne tür kontrol etmek için alır, sizin kendi WindowStyle özelliği aşağıdaki değerlerden biri ile WindowStyle Numaralandırma:
SingleBorderWindow(varsayılan)
Bu pencere stilleri etkisini aşağıdaki şekilde gösterdi.
Ayarlayabileceğiniz WindowStyle ya da kullanarak XAML Biçimlendirme veya kodu; bir pencere kullanım süresi boyunca değiştirmek daha düşüktür, büyük olasılıkla kullanarak yapılandırmanız XAML işaretleme.
<Window
xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
WindowStyle="ToolWindow">
...
</Window>
Dikdörtgen olmayan pencere stili
Burada kenarlık stilleri, durumlar da vardır WindowStyle verir, için yeterli değil. Örneğin, dikdörtgen olmayan bir kenarlık uygulama gibi oluşturmak isteyebilirsiniz Microsoft Windows Media Player kullanır.
Örneğin, aşağıdaki şekilde gösterilen konuşma kabarcık pencere düşünün.
Bu tür bir pencere ayarlayarak oluşturulabilir WindowStyle özelliğine Noneve özel kullanarak destekleyen Window olduğu için saydamlık.
<Window
xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
WindowStyle="None"
AllowsTransparency="True"
Background="Transparent">
...
</Window>
Bu değerleri birleşimi tamamen saydam işlemek için pencereyi bildirir. Bu durumda pencere olmayan istemci alanı adornments (menüyü kapat, geri yükleme simge durumuna küçült ve Ekranı Kapla düğmeleri vb.) kullanılamaz. Sonuç olarak, sağlamak kendi gerekir.
Görev çubuğunun durum
Bir pencere varsayılan görünümünü aşağıdaki şekilde gösterilene benzer bir görev çubuğu düğmesi içerir.
Bazı türleri windows ileti kutuları ve iletişim kutuları gibi bir görev çubuğu düğmesi yoktur (bkz: İletişim Kutularına Genel Bakış). Bir pencerenin görev çubuğu düğmesi olarak gösterilip gösterilmeyeceğini kontrol edebilirsiniz ShowInTaskbar özelliği (true Varsayılan olarak).
<Window
xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
ShowInTaskbar="False">
...
</Window>
Güvenlik konuları
Windowgerektirir UnmanagedCode örneği oluşturulmak üzere güvenlik izni. Yüklü ve yerel makineden başlatılan uygulamalar için bu uygulamaya verilen izinler kümesi içinde döner.
Ancak, bu Internet veya yerel intranet bölgesi kullanımından başlatılan uygulamalara verilen izinler kümesi dışında kalan ClickOnce. Sonuç olarak, kullanıcılar alır bir ClickOnce güvenlik uyarı ve ayarlamak için uygulamaya izin vermeyeceğini gerekirtam güven.
Ayrıca, XBAPs olamaz Göster windows veya iletişim kutularındaki varsayılan. Tek başına uygulama güvenlik konuları hakkında bir tartışma için bkz: WPF Güvenlik Stratejisi - Platform Güvenliği.
Windows diğer türleri
NavigationWindowana gezilebilir içerik için tasarlanmış bir penceredir. Daha fazla bilgi için bkz: Gezintiye Genel Bakış).
İletişim kutuları, bir işlevi tamamlamak için kullanıcıdan bilgi toplamak için sık kullanılan pencerelerdir. Örneğin, ne zaman bir kullanıcının istediği bir dosyayı açmak Açık dosyayı iletişim kutusu kullanıcıdan dosya adı almak için bir uygulama tarafından genellikle olarak görüntülenir. For more information, see İletişim Kutularına Genel Bakış.