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


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
Наследование
RelativeSource
Атрибуты
Реализации

Примеры

В следующем примере показан триггер стиля, который создает 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)

Инициализирует новый экземпляр класса RelativeSource начальным режимом.

RelativeSource(RelativeSourceMode, Type, Int32)

Инициализирует новый экземпляр класса RelativeSource начальным режимом и модификаторами перебора элементов дерева для поиска нужного относительного источника.

Свойства

AncestorLevel

Возвращает или задает уровень искомого предка в режиме FindAncestor. Используйте значение 1 для указания уровня, ближайшего к целевому элементу привязки.

AncestorType

Получает или задает тип искомого предка.

Mode

Возвращает или задает значение RelativeSourceMode, которое описывает расположение источника привязки относительно положения целевого объекта привязки.

PreviousData

Получает статическое значение, которое используется для возвращения объекта RelativeSource, созданного в режиме PreviousData.

Self

Получает статическое значение, которое используется для возвращения объекта RelativeSource, созданного в режиме Self.

TemplatedParent

Получает статическое значение, которое используется для возвращения объекта RelativeSource, созданного в режиме TemplatedParent.

Методы

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) и не предназначен для использования непосредственно из кода.

Применяется к

См. также раздел