Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Предоставляет средства для указания источника привязки с точки зрения относительной связи в графе объектов во время выполнения.
Использование атрибутов XAML (автономный режим)
<Binding RelativeSource="{RelativeSource Self}" .../>
-or-
<object property="{Binding RelativeSource={RelativeSource Self} ...}" .../>
Использование атрибута XAML (режим TemplatedParent)
<Binding RelativeSource="{RelativeSource TemplatedParent}" .../>
-or-
<object property="{Binding RelativeSource={RelativeSource TemplatedParent} ...}" .../>
Значения XAML
| Срок | Description |
|---|---|
| {RelativeSource Self} | Создает значение РежимSelf. Целевой элемент должен использоваться в качестве источника для этой привязки. Это полезно для привязки одного свойства элемента к другому свойству того же элемента. |
| {RelativeSource TemplatedParent} | Создает элемент ControlTemplate , применяемый в качестве источника для этой привязки. Это полезно для применения сведений среды выполнения к привязкам на уровне шаблона. |
Замечания
Привязка может устанавливать Binding.RelativeSource либо как атрибут в объекте Binding, либо как компонент в расширении разметки {Binding}. Поэтому показаны два разных синтаксиса XAML.
RelativeSource аналогичен расширению разметки {Binding}. Это расширение разметки, которое может возвращать свои собственные экземпляры и поддерживает построение на основе строк, фактически передающее аргумент конструктору. В этом случае передаваемый аргумент — это значение Mode.
Режим Self подходит для привязки одного свойства элемента к другому свойству того же элемента и является вариантом привязки с использованием ElementName, но не требует именования и самоссылки элемента. Если привязать одно свойство элемента к другому свойству одного и того же элемента, свойства должны использовать один и тот же тип свойства или также использовать преобразователь для преобразования значений. Например, вы можете использовать Height в качестве источника для ширины без преобразования, но вам потребуется преобразователь для использования IsEnabled в качестве источника видимости.
Вот пример. Этот прямоугольник использует расширение разметки {Binding} , чтобы его высота и ширина всегда равны, и он отображается в виде квадрата. Только высота задается как фиксированное значение. Для этого прямоугольника по умолчанию DataContext имеет значение NULL, а не это. Таким образом, чтобы установить источник контекста данных для самого объекта (и включить привязку к другим свойствам), мы используем RelativeSource={RelativeSource Self} аргумент в использовании расширения разметки {Binding}.
<Rectangle
Fill="Orange" Width="200"
Height="{Binding RelativeSource={RelativeSource Self}, Path=Width}"
/>
Другое использование RelativeSource={RelativeSource Self} заключается в том, чтобы установить DataContext объекта на самого себя. Например, эту технику можно увидеть в некоторых примерах пакета SDK, в которых класс Page был расширен пользовательским свойством, которое уже предоставляет модель представления для быстрой привязки данных, например: <common:LayoutAwarePage ... DataContext="{Binding DefaultViewModel, RelativeSource={RelativeSource Self}}">
Заметка Использование XAML для RelativeSource показывает только использование, для которого оно предназначено: задание значения Binding.RelativeSource в XAML в рамках выражения привязки. Теоретически другие способы использования возможны, если задать свойство, в котором значение — RelativeSource.
Связанные темы
Windows developer