Aracılığıyla paylaş


{RelativeSource} işaretleme uzantısı

Çalışma zamanı nesne grafiğindeki göreli ilişki açısından bağlamanın kaynağını belirtmek için bir araç sağlar.

XAML öznitelik kullanımı (Kendi modu)

<Binding RelativeSource="{RelativeSource Self}" .../>
-or-
<object property="{Binding RelativeSource={RelativeSource Self} ...}" .../>

XAML öznitelik kullanımı (TemplatedParent modu)

<Binding RelativeSource="{RelativeSource TemplatedParent}" .../>
-or-
<object property="{Binding RelativeSource={RelativeSource TemplatedParent} ...}" .../>

XAML değerleri

Süre Description
{RelativeSource Self} Mod değerini Kendi olarak üretir. Hedef öğe bu bağlama için kaynak olarak kullanılmalıdır. Bu, bir öğenin bir özelliğini aynı öğedeki başka bir özelliğe bağlamak için kullanışlıdır.
{RelativeSource TemplatedParent} Bu bağlama için kaynak olarak uygulanan bir ControlTemplate oluşturur. Bu, şablon düzeyinde bağlamalara çalışma zamanı bilgilerini uygulamak için kullanışlıdır.

Açıklamalar

Bağlama, Binding.RelativeSource özniteliğini bir Bağlama nesnesi öğesi üzerinde veya {Binding} işaretleme uzantısı içindeki bir bileşen olarak ayarlayabilir. Bu nedenle iki farklı XAML söz dizimi gösterilir.

RelativeSource , {Binding} işaretleme uzantısına benzer. Kendi örneklerini döndürebilen ve temelde bir argümanı kurucuya ileten dize tabanlı bir yapıyı destekleyen bir işaretleme uzantısıdır. Bu durumda, geçirilen bağımsız değişken Mod değeridir.

Kendi kendine modu, bir öğenin bir özelliğini aynı öğedeki başka bir özelliğe bağlamak için kullanışlıdır ve ElementName bağlaması üzerindeki bir çeşitlemedir, ancak adlandırmayı gerektirmez ve sonra öğeye kendi kendine başvurur. Bir öğenin bir özelliğini aynı öğedeki başka bir özelliğe bağlarsanız, özelliklerin aynı özellik türünü kullanması veya değerleri dönüştürmek için bağlamada bir Dönüştürücü kullanmanız gerekir. Örneğin, Yükseklik herhangi bir dönüştürücü olmadan Genişlik için kaynak olarak kullanılabilir, ancak Öneklikyapar için kaynak olarak Görünürlük kullanmak için bir dönüştürücüye ihtiyacınız vardır.

İşte bir örnek. Bu Dikdörtgen, Yükseklik ve Genişlik değerlerinin her zaman eşit olması ve kare olarak işlenmesi için bir {Binding} işaretleme uzantısı kullanır. Yalnızca Yükseklik sabit bir değer olarak ayarlanır. Bu Dikdörtgen için varsayılan DataContextnull, bu değil. Bu nedenle veri bağlam kaynağını nesnenin kendisi olacak şekilde oluşturmak (ve diğer özelliklerine bağlamayı etkinleştirmek) için {Binding} işaretleme uzantısını kullanırken RelativeSource={RelativeSource Self} bağımsız değişkenini kullanırız.

<Rectangle
  Fill="Orange" Width="200"
  Height="{Binding RelativeSource={RelativeSource Self}, Path=Width}"
/>

Başka bir kullanımı RelativeSource={RelativeSource Self} , bir nesnenin DataContext'ini kendisine ayarlamanın bir yoludur. Örneğin, SDK örneklerinden bazılarında, Page sınıfı kendi veri bağlaması için zaten hazıra bir görünüm modeli sağlayan özel bir özellik ile genişletildiğinde bu tekniği görebilirsiniz: <common:LayoutAwarePage ... DataContext="{Binding DefaultViewModel, RelativeSource={RelativeSource Self}}">

NotRelativeSource için XAML kullanımı yalnızca hedeflendiği kullanımı gösterir: bağlama ifadesinin bir parçası olarak XAML'de Binding.RelativeSource için bir değer ayarlama. Teorik olarak, değeri RelativeSource olan bir özellik ayarlandığında diğer kullanımlar mümkündür.