Поделиться через


Расширение разметки RelativeSource

Обновлен: Ноябрь 2007

Указание свойств RelativeSource источника привязки для использования внутри Привязка расширения разметки, или при задании свойства RelativeSource элемента Binding, установленного в XAML.

Использование атрибута XAML

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

Использование атрибута XAML (вложенный в расширение Binding)

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

Использование элемента объекта XAML

<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

modeEnumValue

Один из следующих вариантов:

  • Метка строки Self; соответствует RelativeSource как созданный со своим свойством Mode, установленным в Self.

  • Метка строки TemplatedParent; соответствует RelativeSource как созданный со своим свойством Mode, установленным в TemplatedParent.

  • Метка строки PreviousData; соответствует RelativeSource как созданный со своим свойством Mode, установленным в PreviousData.

  • Сведения о режиме FindAncestor приведены ниже.

FindAncestor

Метка строки FindAncestor. При использовании этого маркера осуществляется вход в режим, таким образом, RelativeSource определяет тип предка и при необходимости уровень предка. Это соответствует RelativeSource как созданный со своим свойством Mode, установленным в FindAncestor.

typeName

Требуется для режима FindAncestor. Имя типа, которое заполняет свойство AncestorType.

intLevel

Опционально для режима FindAncestor. Уровень предка (вычисляется в сторону символа родителя в логическом дереве).

Заметки

В синтаксисе объектного элемента для режима FindAncestor показанного выше, второй синтаксис объектного элемента используется специально для режима FindAncestor. Режим FindAncestor требует значение AncestorType. Необходимо установить AncestorType в качестве атрибута, используя ссылку Расширение разметки x:Type на тип предка для его поиска. Значение AncestorType используется при обработке запроса привязки во время выполнения.

Для режима FindAncestor опциональное свойство AncestorLevel может помочь устранить неоднозначность поиска предка в случаях, где, возможно, существует более одного предка данного типа, существующего в дереве элементов.

Дополнительные сведения об использовании режима FindAncestor, см. в разделе RelativeSource

Описание принципа привязки данных не рассматривается здесь, см. Общие сведения о связывании данных.

В реализации процессора WPF XAML обработка данного расширения разметки определяется классом RelativeSource.

RelativeSource является расширением разметки. Расширения разметки обычно реализуются, если требуется заменить значения атрибутов на нелитеральные значения или имена обработчиков и если требуется не только простая настройка преобразователей типов на работу с определенными типами или свойствами. Все расширения разметки в XAML используют символы { and } в синтаксисе их атрибутов, который является соглашением, по которому процессор XAML узнает, что расширение разметки должно обработать атрибут. Дополнительные сведения см. в разделе Расширения разметки и XAML.

См. также

Основные понятия

Стилизация и использование шаблонов

Общие сведения о XAML

Расширения разметки и XAML

Общие сведения о связывании данных

Общие сведения об объявлении привязок

Ссылки

Binding

Расширение разметки x:Type