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.
RelativeSourceiçinde veya XAML'de oluşturulan bir öğesinin RelativeSource özelliğini ayarlarken kullanılacak Binding bağlama kaynağının özelliklerini belirtir.
XAML Öznitelik Kullanımı
<Binding RelativeSource="{RelativeSource modeEnumValue}" ... />
XAML Öznitelik Kullanımı (Bağlama uzantısı içinde iç içe yerleştirilmiş)
<object property="{Binding RelativeSource={RelativeSource modeEnumValue} ...}" ... />
XAML Nesne Öğesi Kullanımı
<Binding>
<Binding.RelativeSource>
<RelativeSource Mode="modeEnumValue"/>
</Binding.RelativeSource>
</Binding>
-veya-
<Binding>
<Binding.RelativeSource>
<RelativeSource
Mode="FindAncestor"
AncestorType="{x:Type typeName}"
AncestorLevel="intLevel"
/>
</Binding.RelativeSource>
</Binding>
XAML Değerleri
| Değer | Açıklama |
|---|---|
modeEnumValue |
Aşağıdakilerden biri: - Dize belirteci Self; RelativeSourceolarak ayarlanmış Mode özelliğiyle oluşturulan bir Self karşılık gelir.- Dize belirteci TemplatedParent; RelativeSourceolarak ayarlanmış Mode özelliğiyle oluşturulan bir TemplatedParent karşılık gelir.- Dize belirteci PreviousData; RelativeSourceolarak ayarlanmış Mode özelliğiyle oluşturulan bir PreviousData karşılık gelir.- FindAncestor modu hakkında bilgi için aşağıya bakın. |
FindAncestor |
Dize belirteci FindAncestor. Bu belirteci kullanarak, bir RelativeSource bir üst türü ve isteğe bağlı olarak bir üst düzeyi belirtir bir moda girer. Bu, RelativeSourceolarak ayarlanmış Mode özelliğiyle oluşturulan bir FindAncestor karşılık gelir. |
typeName |
FindAncestor modu için gereklidir.
AncestorType özelliğini dolduran türün adı. |
intLevel |
FindAncestor modu için isteğe bağlı. Bir ata seviyesi (mantıksal ağaçta ebeveyn yönüne doğru değerlendirilir). |
Açıklamalar
{RelativeSource TemplatedParent} bağlama kullanımları, bir denetimin kullanıcı arabiriminin ve denetimin mantığının ayrılmasına ilişkin daha büyük bir kavramı ele alan önemli bir tekniktir. Bu, şablon tanımının içinden şablonlanan üst öğeye (şablonun uygulandığı çalışma zamanı nesne örneği) bağlamayı etkinleştirir. Bu durumda, TemplateBinding Biçimlendirme Uzantısı aslında şu bağlama ifadesi için bir kısaltmadır: {Binding RelativeSource={RelativeSource TemplatedParent}}.
TemplateBinding veya {RelativeSource TemplatedParent} kullanımlarının her ikisi de yalnızca şablonu tanımlayan XAML'de geçerlidir. Daha fazla bilgi için bkz. TemplateBinding Markup Extension.
{RelativeSource FindAncestor}, denetim şablonlarında veya öngörülebilir, bağımsız kullanıcı arabirimi bileşimlerinde, denetimin her zaman belirli bir üst türdeki görsel ağaçta olması beklenen durumlar için kullanılır. Örneğin, bir öğe denetimindeki öğeler, ebeveyn atalarının özelliklerine bağlanmak için FindAncestor kullanabilir. Veya bir şablondaki denetim bileşiminin parçası olan öğeler, aynı bileşim yapısındaki üst öğelere FindAncestor bağlantıları kullanabilir.
XAML Sözdizimi bölümlerinde gösterilen FindAncestor modu için nesne öğesi söz diziminde, ikinci nesne öğesi söz dizimi özellikle FindAncestor modu için kullanılır.
FindAncestor modu için AncestorType bir değer gerekir.
AncestorType aranacak ata türüne başvuru kullanarak öznitelik olarak ayarlamanız gerekir. bağlama isteği çalışma zamanında işlendiğinde AncestorType değeri kullanılır.
FindAncestor modu için, isteğe bağlı AncestorLevel özelliği, öğe ağacında bu türden birden fazla ata bulunduğu durumlarda ata aramasındaki belirsizliği gidermeye yardımcı olabilir.
FindAncestor modunu kullanma hakkında daha fazla bilgi için bkz. RelativeSource.
{RelativeSource Self}, örneğin bir özelliğinin aynı örneğin başka bir özelliğinin değerine bağımlı olması gerektiği ve bu iki özellik arasında genel bağımlılık özelliği ilişkisinin (zorlama gibi) zaten mevcut olmadığı senaryolar için yararlıdır. Bir nesnede değerlerin tam anlamıyla aynı (ve aynı şekilde yazıldığı) iki özelliğin bulunması nadir olsa da, Converterolan bir bağlamaya {RelativeSource Self} parametresi uygulayabilir ve kaynak ve hedef türler arasında dönüştürmek için dönüştürücüsü kullanabilirsiniz. Başka bir senaryo {RelativeSource Self} için, bir MultiDataTrigger'nin parçası olarak gerçekleşebilir.
Örneğin, aşağıdaki XAML, Rectangleiçin hangi değer girilirse girilsin, Width'nin her zaman kare olacak şekilde bir Rectangle öğesi tanımlar: <Rectangle Width="200" Height="{Binding RelativeSource={RelativeSource Self}, Path=Width}" .../>
{RelativeSource PreviousData}, veri şablonlarında veya bağlamaların veri kaynağı olarak bir koleksiyon kullandığı durumlarda yararlıdır. koleksiyondaki bitişik veri öğeleri arasındaki ilişkileri vurgulamak için {RelativeSource PreviousData} kullanabilirsiniz. İlgili bir teknik, veri kaynağındaki geçerli ve önceki öğeler arasında bir MultiBinding oluşturmak ve iki öğe ile özellikleri arasındaki farkı belirlemek için bu bağlamada bir dönüştürücü kullanmaktır.
Aşağıdaki örnekte, öğeler şablonundaki ilk TextBlock geçerli sayıyı görüntüler. İkinci TextBlock bağlaması, nominal olarak iki MultiBinding bileşeni olan bir Binding'dir: geçerli kayıt ve {RelativeSource PreviousData}kullanarak önceki veri kaydını kasıtlı olarak kullanan bir bağlama. Ardından, MultiBinding üzerindeki bir dönüştürücü farkı hesaplar ve bağlantıya geri gönderir.
<ListBox Name="fibolist">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding}"/>
<TextBlock>, difference = </TextBlock>
<TextBlock>
<TextBlock.Text>
<MultiBinding Converter="{StaticResource DiffConverter}">
<Binding/>
<Binding RelativeSource="{RelativeSource PreviousData}"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Kavram olarak veri bağlamayı açıklama konusu burada ele alınmamıştır, bkz. Veri Bağlamaya Genel Bakış.
WPF XAML işlemci uygulamasında, bu işaretleme uzantısının işlenmesi RelativeSource sınıfı tarafından tanımlanır.
RelativeSource bir işaretleme uzantısıdır. İşaretleme uzantıları, genellikle öznitelik değerlerinin sabit değerler ya da işleyici isimlerinden farklı olması gerektiğinde uygulanır ve bu gereksinim, belirli türlere veya özelliklere tür dönüştürücü yerleştirmekten daha geniş kapsamlıdır. XAML'deki tüm işaretleme uzantıları, öznitelik söz diziminde { ve } karakterleri kullanır. Bu, XAML işlemcisinin işaretleme uzantısının özniteliği işlemesi gerektiğini tanıdığı kuraldır. Daha fazla bilgi için bkz. biçimlendirme uzantıları ve WPF XAML.
Ayrıca bakınız
.NET Desktop feedback