Расширение разметки 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 |
Один из следующих вариантов:
|
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.
См. также
Основные понятия
Стилизация и использование шаблонов
Общие сведения о связывании данных
Общие сведения об объявлении привязок