RelativeSource Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Реализует расширение разметки, описывающее расположение источника привязки относительно положения целевого объекта привязки.
public ref class RelativeSource : System::Windows::Markup::MarkupExtension, System::ComponentModel::ISupportInitialize
[System.Windows.Markup.MarkupExtensionReturnType(typeof(System.Windows.Data.RelativeSource))]
public class RelativeSource : System.Windows.Markup.MarkupExtension, System.ComponentModel.ISupportInitialize
[<System.Windows.Markup.MarkupExtensionReturnType(typeof(System.Windows.Data.RelativeSource))>]
type RelativeSource = class
inherit MarkupExtension
interface ISupportInitialize
Public Class RelativeSource
Inherits MarkupExtension
Implements ISupportInitialize
- Наследование
- Атрибуты
- Реализации
Примеры
В следующем примере показан триггер стиля, который создает ToolTip сообщение об ошибке проверки. RelativeSource Используя свойство, значение метода задания привязывается к содержимому ошибки текущего TextBox (TextBoxиспользуемого стиля). Дополнительные сведения об этом примере см. в статье "Практическое руководство. Реализация проверки привязки".
<Style x:Key="textBoxInError" TargetType="{x:Type TextBox}">
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip"
Value="{Binding RelativeSource={x:Static RelativeSource.Self},
Path=(Validation.Errors)/ErrorContent}"/>
</Trigger>
</Style.Triggers>
</Style>
В следующем примере показано Style определение пользовательского элемента управления NumericUpDown. Свойство TextTextBlock объекта привязано к Value объекту, TemplatedParentкоторый является NumericUpDown элементом управления, Style к которому применяется в данном случае.
<!--ControlTemplate for NumericUpDown that inherits from
Control.-->
<Style TargetType="{x:Type local:NumericUpDown}">
<Setter Property="HorizontalAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:NumericUpDown}">
<Grid Margin="3">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Border BorderThickness="1" BorderBrush="Gray"
Margin="2" Grid.RowSpan="2"
VerticalAlignment="Center" HorizontalAlignment="Stretch">
<TextBlock Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Value}"
Width="60" TextAlignment="Right" Padding="5"/>
</Border>
<RepeatButton Command="{x:Static local:NumericUpDown.IncreaseCommand}"
Grid.Column="1" Grid.Row="0">Up</RepeatButton>
<RepeatButton Command="{x:Static local:NumericUpDown.DecreaseCommand}"
Grid.Column="1" Grid.Row="1">Down</RepeatButton>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Ниже возвращается второе ItemsControl , обнаруженное на восходящем пути, начиная с целевого элемента привязки.
Binding myBinding = new Binding();
// Returns the second ItemsControl encountered on the upward path
// starting at the target element of the binding
myBinding.RelativeSource = new RelativeSource(
RelativeSourceMode.FindAncestor, typeof(ItemsControl), 2);
Dim myBinding As New Binding()
' Returns the second ItemsControl encountered on the upward path
' starting at the target element of the binding
myBinding.RelativeSource = New RelativeSource(RelativeSourceMode.FindAncestor, GetType(ItemsControl), 2)
Комментарии
Одним из способов указать источник привязки является использование Binding.RelativeSource свойства. Это тип свойства этого свойства. RelativeSource одновременно является реализацией расширения разметки и объектом данных. Когда расширение возвращается (см ProvideValue.), соответствующие сведения содержатся в данных. Основной целью расширения разметки является разрешение синтаксиса конструктора переменной аргумента в форме атрибута, чтобы FindAncestor режим можно было определить в соответствии с двумя дополнительными аргументами типа предка и уровня, которые другие режимы не требуют.
Сведения о XAML см. в разделе RelativeSource MarkupExtension.
Конструкторы
| Имя | Описание |
|---|---|
| RelativeSource() |
Инициализирует новый экземпляр класса RelativeSource. |
| RelativeSource(RelativeSourceMode, Type, Int32) |
Инициализирует новый экземпляр RelativeSource класса с начальным режимом и дополнительными квалификаторами для поиска требуемого относительного источника. |
| RelativeSource(RelativeSourceMode) |
Инициализирует новый экземпляр RelativeSource класса с помощью начального режима. |
Свойства
| Имя | Описание |
|---|---|
| AncestorLevel |
Возвращает или задает уровень предка для поиска в FindAncestor режиме. Используйте 1, чтобы указать ближайший к целевому элементу привязки. |
| AncestorType |
Возвращает или задает тип предка для поиска. |
| Mode |
Возвращает или задает RelativeSourceMode значение, описывающее расположение источника привязки относительно положения целевого объекта привязки. |
| PreviousData |
Возвращает статическое значение, используемое для возврата созданного RelativeSourcePreviousData для режима. |
| Self |
Возвращает статическое значение, используемое для возврата созданного RelativeSourceSelf для режима. |
| TemplatedParent |
Возвращает статическое значение, используемое для возврата созданного RelativeSourceTemplatedParent для режима. |
Методы
| Имя | Описание |
|---|---|
| Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
| GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
| GetType() |
Возвращает Type текущего экземпляра. (Унаследовано от Object) |
| MemberwiseClone() |
Создает неглубокую копию текущей Object. (Унаследовано от Object) |
| ProvideValue(IServiceProvider) |
Возвращает объект, который должен быть задан в качестве значения свойства целевого объекта для этого расширения разметки. Для RelativeSourceэтого используется другой RelativeSourceисточник для указанного режима. |
| ShouldSerializeAncestorLevel() |
Указывает, следует ли AncestorLevel сохранять свойство. |
| ShouldSerializeAncestorType() |
Указывает, следует ли AncestorType сохранять свойство. |
| ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |
Явные реализации интерфейса
| Имя | Описание |
|---|---|
| ISupportInitialize.BeginInit() |
Этот член поддерживает инфраструктуру Windows Presentation Foundation (WPF) и не предназначен для использования непосредственно из кода. |
| ISupportInitialize.EndInit() |
Этот член поддерживает инфраструктуру Windows Presentation Foundation (WPF) и не предназначен для использования непосредственно из кода. |