Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Süslemeler, kullanıcıya görsel ipuçları sağlamak için kullanılan özel bir FrameworkElement türüdür. Diğer kullanımlar arasında, Süsleyiciler öğelere işlevsel tutamaçlar eklemek veya bir denetim hakkında durum bilgisi sağlamak için kullanılabilir.
| Başlık | Description |
|---|---|
| Adorner'ı Uygulamak | Özel donatıcı uygulamasının nasıl oluşturulacağını gösterir. |
| Bir Öğeye Süsleyici Bağlama | Belirli bir kullanıcı arabirimi öğesine bir donatıcı eklemeyi gösterir. |
| Panelin Çocuk Öğelerini Süsleme | Bir panelin tüm çocuk öğelerine nasıl süsleyici uygulanacağını gösterir. |
| Bir Öğeden Donatıcıyı Kaldırma | Bir süsleyicinin program aracılığıyla nasıl kaldırılacağını açıklar. |
| Öğeden tüm Donatıcıları kaldırma | Bir öğedeki tüm süslerin aynı anda nasıl temizleneceğini gösterir. |
Stiller ve şablonlar
Adorner sınıfı, şablon bölümlerini veya görsel durumlarını tanımlamayan soyut bir temel sınıftır. Somut süsleyici uygulamaları bu sınıftan devralır ve kendi işleme davranışlarını OnRender yöntemi aracılığıyla tanımlar.
İçerik özelliği
Bu denetim bir içerik özelliği tanımlamaz.
Parçalar
Bu denetim herhangi bir şablon parçası tanımlamaz.
Görsel durumlar
Bu denetim herhangi bir görsel durum tanımlamaz.
Temel kavramlar
WPF çerçevesi içinde süsleme öğeleriyle ilgili temel kavramları anlamak için bu konular hakkında bilgi sahibi olmak gerekir.
Süsleyiciler hakkında
Adorner öğesine bağlı özel bir FrameworkElement, UIElement öğesidir. Süsleyiciler, süslenmiş öğenin veya süslenmiş öğeler koleksiyonunun her zaman üzerinde yer alan bir işleme yüzeyi olan AdornerLayer içinde işlenir. Bir süsleyicinin çizimi, süsleyicinin bağlı olduğu UIElement çiziminden bağımsızdır. Donatıcı genellikle, donatılan öğenin sol üst kısmında bulunan standart 2B koordinat kaynağı kullanılarak bağlandığı öğeye göre konumlandırılır.
Süsleyiciler için yaygın kullanımlar şunlardır:
- kullanıcının bir UIElement üzerinde işlem yapmasını sağlayan işlevsel tutacaklar ekleme (yeniden boyutlandırma, döndürme, yeniden konumlandırma vb.).
- Çeşitli durumları belirtmek için veya çeşitli olaylara yanıt olarak görsel geri bildirim sağlayın.
- Görsel süslemeleri bir UIElement üzerine yerleştir.
- bir bölümünü veya tamamını UIElementgörsel olarak maskele veya geçersiz kıl.
Adorner çerçeve sınıfları
Windows Presentation Foundation (WPF), görsel öğeleri donatma için temel bir çerçeve sağlar. Aşağıdaki tabloda nesneleri donatırken kullanılan birincil türler ve bunların amacı listelenmiştir:
| Class | Description |
|---|---|
| Adorner | Tüm somut donatıcı uygulamalarının devraldığı soyut bir temel sınıf. |
| AdornerLayer | Bir veya daha fazla süslü öğenin süsleyicileri için bir işleme katmanını temsil eden sınıf. |
| AdornerDecorator | Bir donatıcı katmanının bir öğe koleksiyonuyla ilişkilendirilmesine olanak tanıyan bir sınıf. |
İşleme davranışı
Donatıcıların doğasında yerleşik bir işleme davranışını içermediğini belirtmek önemlidir; bir donatıcının işlem yapabilmesini sağlamak, donatıcıyı uygulayan kişiye aittir. İşleme davranışını uygulamanın yaygın bir yolu, OnRender yöntemini geçersiz kılarak ve süsleyicinin görsellerini istendiği gibi işlemek için bir veya daha fazla DrawingContext nesne kullanmaktır.
Uyarı
Donatıcı katmanına yerleştirilen her şey, ayarladığınız diğer stillerin üzerinde işlenir. Başka bir deyişle, süsleyiciler her zaman görsel olarak üsttedir ve z-order ile değiştirilemez.
Olaylar ve isabet testi
Donatıcılar giriş olaylarını diğer FrameworkElementtüm gibi alır. Donatıcı her zaman donattığı öğeden daha yüksek bir z sırasına sahip olduğundan, donatıcı genellikle temel alınan öğeye yönelik olacak olan giriş olaylarını (örneğin Drop veya MouseMove) alır. Süsleyici, belirli giriş olaylarını dinleyebilir ve olayı tekrar tetikleyerek bunları temel alınan süslenmiş öğeye iletebilir.
Bir donatıcı altındaki öğelerin doğrudan isabet testini etkinleştirmek için, isabet testi IsHitTestVisible özelliğini donatıcıda false olarak ayarlayın. İsabet testi hakkında daha fazla bilgi için bkz. Görsel Katmanında İsabet Testi.
Örnekler
Aşağıdaki örneklerde, yaygın senaryolarda donatıcıların nasıl uygulanıp kullanılacağı gösterilmektedir.
Özel süsleyici uygulama
Windows Presentation Foundation (WPF) tarafından sağlanan donatıcılar çerçevesi öncelikli olarak özel donatıcıların oluşturulmasını desteklemeye yöneliktir. Özel bir süsleyici, soyut Adorner sınıfından türetilen bir sınıfı uygulayarak oluşturulur.
Uyarı
Adorner öğesinin üst öğesi, süslenen öğe değil, Adorner öğesini işleyen AdornerLayer'dir.
Aşağıdaki örnekte basit bir donatıcı uygulayan bir sınıf gösterilmektedir. Örnek donatıcı, bir UIElement öğesinin köşelerini dairelerle süsler.
// Adorners must subclass the abstract base class Adorner.
public class SimpleCircleAdorner : Adorner
{
// Be sure to call the base class constructor.
public SimpleCircleAdorner(UIElement adornedElement)
: base(adornedElement)
{
}
// A common way to implement an adorner's rendering behavior is to override the OnRender
// method, which is called by the layout system as part of a rendering pass.
protected override void OnRender(DrawingContext drawingContext)
{
Rect adornedElementRect = new Rect(this.AdornedElement.DesiredSize);
// Some arbitrary drawing implements.
SolidColorBrush renderBrush = new SolidColorBrush(Colors.Green);
renderBrush.Opacity = 0.2;
Pen renderPen = new Pen(new SolidColorBrush(Colors.Navy), 1.5);
double renderRadius = 5.0;
// Draw a circle at each corner.
drawingContext.DrawEllipse(renderBrush, renderPen, adornedElementRect.TopLeft, renderRadius, renderRadius);
drawingContext.DrawEllipse(renderBrush, renderPen, adornedElementRect.TopRight, renderRadius, renderRadius);
drawingContext.DrawEllipse(renderBrush, renderPen, adornedElementRect.BottomLeft, renderRadius, renderRadius);
drawingContext.DrawEllipse(renderBrush, renderPen, adornedElementRect.BottomRight, renderRadius, renderRadius);
}
}
Public Class SimpleCircleAdorner
Inherits Adorner
Sub New(ByVal adornedElement As UIElement)
MyBase.New(adornedElement)
End Sub
Protected Overrides Sub OnRender(ByVal drawingContext As System.Windows.Media.DrawingContext)
MyBase.OnRender(drawingContext)
Dim adornedElementRect As New Rect(AdornedElement.DesiredSize)
Dim renderBrush As New SolidColorBrush(Colors.Green)
renderBrush.Opacity = 0.2
Dim renderPen As New Pen(New SolidColorBrush(Colors.Navy), 1.5)
Dim renderRadius As Double
renderRadius = 5.0
'Draw a circle at each corner.
drawingContext.DrawEllipse(renderBrush, renderPen, adornedElementRect.TopLeft, renderRadius, renderRadius)
drawingContext.DrawEllipse(renderBrush, renderPen, adornedElementRect.TopRight, renderRadius, renderRadius)
drawingContext.DrawEllipse(renderBrush, renderPen, adornedElementRect.BottomLeft, renderRadius, renderRadius)
drawingContext.DrawEllipse(renderBrush, renderPen, adornedElementRect.BottomRight, renderRadius, renderRadius)
End Sub
End Class
Tek bir UIElement'i süsleme
Belirli bir UIElement öğesine bir donatıcı bağlamak için şu adımları izleyin:
Adlandırılacak UIElement öğesi için bir AdornerLayer nesnesi almak üzere GetAdornerLayer statik yöntemi çağırın. GetAdornerLayer, belirtilen UIElement konumundan başlayarak görsel ağaç boyunca yukarı doğru çıkar ve bulduğu ilk donatıcı katmanını döndürür. (Hiçbir süsleyici katmanı bulunmazsa yöntem null döndürür.)
Adorner'ı hedefe bağlamak için Add metodunu çağırın.
Aşağıdaki örnek, simpleCircleAdorner'ı (yukarıda gösterilen) adlandırılmış TextBox bağlar:
myAdornerLayer = AdornerLayer.GetAdornerLayer(myTextBox);
myAdornerLayer.Add(new SimpleCircleAdorner(myTextBox));
myAdornerLayer = AdornerLayer.GetAdornerLayer(myTextBox)
myAdornerLayer.Add(New SimpleCircleAdorner(myTextBox))
Uyarı
Bir donatıcıyı başka bir öğeye bağlamak için Genişletilebilir Uygulama İşaretlemesi Dili 'nin (XAML) kullanılması şu anda desteklenmiyor.
Panelin çocuk öğelerini süsleme
Bir donatıcıyı Panel alt öğelerine bağlamak için şu adımları izleyin:
staticyöntemini, alt öğeleri donatılacak öğe için bir süsleyici katmanı bulmak amacıyla GetAdornerLayer çağırın.Üst öğenin alt öğelerini numaralandırın ve her alt öğeye bir donatıcı bağlamak için Add yöntemini çağırın.
Aşağıdaki örnek, bir SimpleCircleAdorner'ı (yukarıda gösterilmiştir) StackPanel adlı öğenin alt elemanlarına bağlar:
foreach (UIElement toAdorn in myStackPanel.Children)
myAdornerLayer.Add(new SimpleCircleAdorner(toAdorn));
For Each toAdorn As UIElement In myStackPanel.Children
myAdornerLayer.Add(New SimpleCircleAdorner(toAdorn))
Next
Ayrıca bakınız
.NET Desktop feedback