Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Предоставляет средства для указания источника привязки с точки зрения относительной связи в графе объектов во время выполнения.
Использование атрибутов 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