Aracılığıyla paylaş


RelativeSource MarkupExtension

Özelliklerini belirtir bir RelativeSource içinde kullanılacak bağlama kaynağı, bir Biçimlendirme Uzantısı Bağlama, veya ayarlarken RelativeSource özelliği, bir Binding öğesi kurulan xaml.

XAML Attribute Usage

<Binding RelativeSource="{RelativeSource modeEnumValue}" .../>

XAML Attribute Usage (nested within Binding extension)

<object property="{Binding RelativeSource={RelativeSource modeEnumValue} ...}" .../>

XAML Object Element Usage

<Binding>
  <Binding.RelativeSource>
    <RelativeSource Mode="modeEnumValue"/>
  </Binding.RelativeSource>
</Binding>
- or 
<Binding>
  <Binding.RelativeSource>
    <RelativeSource
      Mode="FindAncestor"
      AncestorType="{x:Type typeName}"
      AncestorLevel="intLevel"
    />
  </Binding.RelativeSource>
</Binding>

XAML Values

modeEnumValue

One of the following:

FindAncestor

The string token FindAncestor. Using this token enters a mode whereby a RelativeSource specifies an ancestor type and optionally an ancestor level. This corresponds to a RelativeSource as created with its Mode property set to FindAncestor.

typeName

Required for FindAncestor mode. The name of a type, which fills the AncestorType property.

intLevel

Optional for FindAncestor mode. An ancestor level (evaluated towards the parent direction in the logical tree).

Açıklamalar

{RelativeSource TemplatedParent}bağlama kullanımları daha büyük bir denetimin kullanıcı Arabirimi ve denetimin mantık ayrımını kavramını ele bir anahtar teknik ' dir. Bu şablon tanımda bağlama şablonu esas alan üst (şablonun uygulanacağı yeri zamanında nesne örneği) sağlar. Bu servis talebiyle ilgili TemplateBinding Biçimlendirme Uzantısı aslında aşağıdaki bağlama deyimi için bir kısaltma olan: {Binding RelativeSource={RelativeSource TemplatedParent}}. TemplateBindingveya {RelativeSource TemplatedParent} kullanımları olan xaml tanımlayan içinde yalnızca ilgili hem debir şablonu. For more information, see TemplateBinding Biçimlendirme Uzantısı

{RelativeSource FindAncestor}genelde denetim şablonları veya kendi UI kompozisyonlarınıza öngörülebilir, burada bir denetim her zaman belirli bir ata türde görsel ağacında olması beklenir durumlarda kullanılır. Örneğin, bir öğe denetimini öğeleri kullanabilirsiniz FindAncestor kullanımları maddelerin özelliklerine bağlamak için Denetim üst ata. Ya da Denetim kompozisyon bir şablona ait olan öğeleri kullanarak FindAncestor bindings üst öğelere o aynı kompozisyon yapısı.

Nesne öğesi sözdizimi, FindAncestor xaml sözdizimi bölümlerde gösterilen ikinci nesne öğesi sözdizimi için kullanılan modu FindAncestor mod. FindAncestor mode requires an AncestorType value. You must set AncestorType as an attribute using an x: tür biçimlendirme uzantı reference to the type of ancestor to look for. The AncestorType value is used when the binding request is processed at run-time.

For FindAncestor mode, the optional property AncestorLevel can help disambiguate the ancestor lookup in cases where there is possibly more than one ancestor of that type existing in the element tree.

Nasıl kullanılacağı hakkında daha fazla bilgi için FindAncestor mod, bkz: RelativeSource.

{RelativeSource Self}durumlarda ise bu iki özellik arasında var burada örnek bir özelliği aynı örneği ve genel bağımlılık özelliği ilişkisi (zorlama gibi) başka bir özellik değerini zaten bağımlı olmamalıdır. İki özellik değerleri harfi harfine aynı (ve aynı şekilde yazılan şekilde) bir nesne üzerinde mevcut, ayrıca uygulayabilirsiniz ender olmasına karşın bir Converter parametresi olan bir bağlama için {RelativeSource Self}ve kaynak ve hedef türler. arasında dönüştürmek dönüştürücü kullanın Başka bir senaryo için {RelativeSource Self} bir parçası bir MultiDataTrigger.

Örneğin, aşağıdaki xaml tanımlayan bir Rectangle öğesi gibi hangi değeri ne olursa olsun girilen için Width, Rectangle her zaman bir kare olan: <Rectangle Width="200" Height="{Binding RelativeSource={RelativeSource Self}, Path=Width}" .../>

{RelativeSource PreviousData}veri şablonları veya burada bağları bir koleksiyon veri kaynağı olarak kullanan durumlarda yararlıdır. Kullanabileceğiniz {RelativeSource PreviousData} Vurgu ilişkiler bitişik veri öğeleri koleksiyonu. Kurmak için ilgili bir yöntem ise, bir MultiBinding Geçerli ve önceki öğeler veri kaynağı ve kullanımı arasında bir dönüştürücü o bağlama belirleme arasındaki fark iki öğe kendi özellikleri.

Aşağıdaki örnekte, ilk TextBlock maddeleri şablonu görüntüler geçerli bir sayı. İkinci TextBlock bağlama olan bir MultiBinding ismen olan iki Binding consistuents: Geçerli kayıt ve önceki veri kaydı kullanarak kasten kullanan bağlama {RelativeSource PreviousData}. Daha sonra bir dönüştürücü MultiBinding farkı hesaplayıp verir ona bağlama.

        <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>

Describing data binding as a concept is not covered here, see Veri Bağlama Genel Bakış.

De WPF xaml işlemci uygulaması, bu biçimlendirme uzantı işleme göre tanımlanır RelativeSource sınıfa

RelativeSource is a markup extension. Markup extensions are typically implemented when there is a requirement to escape attribute values to be other than literal values or handler names, and the requirement is more global than just putting type converters on certain types or properties. xaml kullanımda tüm biçimlendirme uzantıları { ve } kendi öznitelik sözdizimi kuralı xaml işlemci tanıdığı olduğunu işaretleme uzantısı gerekir işlem sıralamada olduğu karakterlerözniteliği. For more information, see Biçimlendirme Uzantıları ve WPF XAML.

Ayrıca bkz.

Başvuru

Binding

x: tür biçimlendirme uzantı

Kavramlar

Stillendirme ve Şablon Oluşturma

XAML'e Genel Bakış (WPF)

Biçimlendirme Uzantıları ve WPF XAML

Veri Bağlama Genel Bakış

Bağlama Bildirimleri Genel Bakış