RelativeSource RelativeSource RelativeSource RelativeSource Class

Определение

Реализует расширение разметки, которое описывает расположение источника привязки относительно положения целевого объекта привязки.Implements a markup extension that describes the location of the binding source relative to the position of the binding target.

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
type RelativeSource = class
    inherit MarkupExtension
    interface ISupportInitialize
Public Class RelativeSource
Inherits MarkupExtension
Implements ISupportInitialize
Наследование
RelativeSourceRelativeSourceRelativeSourceRelativeSource
Атрибуты
Реализации

Примеры

В следующем примере показано триггер стиля, который создает ToolTip , сообщающий сообщение об ошибке проверки.The following example shows a style trigger that creates a ToolTip that reports a validation error message. С помощью RelativeSource свойство, значение метода задания значения привязывается к содержимому ошибки текущего TextBox ( TextBox с использованием стиля).Using the RelativeSource property, the value of the setter binds to the error content of the current TextBox (the TextBox using the style). Дополнительные сведения об этом примере см. в разделе как: Реализация проверки привязки.For more information on this example, see How to: Implement Binding Validation.

<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.The following example shows the Style definition of a custom control called NumericUpDown. Text Свойство TextBlock привязан к Value объекта, который является TemplatedParent, который является NumericUpDown управлять этим Style применяется к таким образом.The Text property of the TextBlock is bound to the Value of the object that is the TemplatedParent, which is the NumericUpDown control that this Style is applied to in this case.

<!--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>

Полный пример см. в разделе пользовательского элемента управления NumericUpDown с темой и пример Поддержка автоматизации пользовательского интерфейса.For the complete sample, see NumericUpDown Custom Control with Theme and UI Automation Support Sample.

Второй возвращает следующие ItemsControl на путь вверх, начиная с целевого элемента привязки.The following returns the second ItemsControl encountered on the upward path starting at the target element of the binding.

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 свойство.One of the ways to specify a binding source is to use the Binding.RelativeSource property. Это тип свойства этого свойства.This is the property type of that property. RelativeSource одновременно является и реализации расширения разметки и объект данных.RelativeSource is simultaneously a markup extension implementation and a data object. Когда модуль возвращает сам (см. в разделе ProvideValue), соответствующие сведения, содержащиеся в данных.When the extension returns itself (see ProvideValue), the relevant information is contained in the data. Основная цель расширения разметки, чтобы разрешить синтаксис конструктора аргумента переменной в виде атрибута, таким образом, чтобы FindAncestor режим может быть определен как встроенный с двумя аргументами типа и уровня, не требуют других режимов предка.The main purpose of the markup extension is to allow a variable-argument constructor syntax in attribute form, so that the FindAncestor mode can be defined inline with the two extra arguments for ancestor type and level that the other modes do not require.

Для XAMLXAML сведения см. в разделе расширение разметки RelativeSource.For XAMLXAML information, see RelativeSource MarkupExtension.

Конструкторы

RelativeSource() RelativeSource() RelativeSource() RelativeSource()

Инициализирует новый экземпляр класса RelativeSource.Initializes a new instance of the RelativeSource class.

RelativeSource(RelativeSourceMode) RelativeSource(RelativeSourceMode) RelativeSource(RelativeSourceMode) RelativeSource(RelativeSourceMode)

Инициализирует новый экземпляр класса RelativeSource начальным режимом.Initializes a new instance of the RelativeSource class with an initial mode.

RelativeSource(RelativeSourceMode, Type, Int32) RelativeSource(RelativeSourceMode, Type, Int32) RelativeSource(RelativeSourceMode, Type, Int32) RelativeSource(RelativeSourceMode, Type, Int32)

Инициализирует новый экземпляр класса RelativeSource начальным режимом и модификаторами перебора элементов дерева для поиска нужного относительного источника.Initializes a new instance of the RelativeSource class with an initial mode and additional tree-walking qualifiers for finding the desired relative source.

Свойства

AncestorLevel AncestorLevel AncestorLevel AncestorLevel

Возвращает или задает уровень искомого предка в режиме FindAncestor.Gets or sets the level of ancestor to look for, in FindAncestor mode. Используйте значение 1 для указания уровня, ближайшего к целевому элементу привязки.Use 1 to indicate the one nearest to the binding target element.

AncestorType AncestorType AncestorType AncestorType

Получает или задает тип искомого предка.Gets or sets the type of ancestor to look for.

Mode Mode Mode Mode

Возвращает или задает значение RelativeSourceMode, которое описывает расположение источника привязки относительно положения целевого объекта привязки.Gets or sets a RelativeSourceMode value that describes the location of the binding source relative to the position of the binding target.

PreviousData PreviousData PreviousData PreviousData

Получает статическое значение, которое используется для возвращения объекта RelativeSource, созданного в режиме PreviousData.Gets a static value that is used to return a RelativeSource constructed for the PreviousData mode.

Self Self Self Self

Получает статическое значение, которое используется для возвращения объекта RelativeSource, созданного в режиме Self.Gets a static value that is used to return a RelativeSource constructed for the Self mode.

TemplatedParent TemplatedParent TemplatedParent TemplatedParent

Получает статическое значение, которое используется для возвращения объекта RelativeSource, созданного в режиме TemplatedParent.Gets a static value that is used to return a RelativeSource constructed for the TemplatedParent mode.

Методы

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Определяет, равен ли заданный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Служит хэш-функцией по умолчанию.Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Inherited from Object)
ProvideValue(IServiceProvider) ProvideValue(IServiceProvider) ProvideValue(IServiceProvider) ProvideValue(IServiceProvider)

Возвращает объект, который следует задать в качестве значения свойства целевого объекта для данного расширения разметки.Returns an object that should be set as the value on the target object's property for this markup extension. Для объекта RelativeSource, это другой объект RelativeSource, который использует подходящий источник для заданного режима.For RelativeSource, this is another RelativeSource, using the appropriate source for the specified mode.

ShouldSerializeAncestorLevel() ShouldSerializeAncestorLevel() ShouldSerializeAncestorLevel() ShouldSerializeAncestorLevel()

Определяет необходимость сохранения значения свойства AncestorLevel.Indicates whether the AncestorLevel property should be persisted.

ShouldSerializeAncestorType() ShouldSerializeAncestorType() ShouldSerializeAncestorType() ShouldSerializeAncestorType()

Определяет необходимость сохранения значения свойства AncestorType.Indicates whether the AncestorType property should be persisted.

ToString() ToString() ToString() ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Inherited from Object)

Явные реализации интерфейса

ISupportInitialize.BeginInit() ISupportInitialize.BeginInit() ISupportInitialize.BeginInit() ISupportInitialize.BeginInit()

Этот член поддерживает инфраструктуру Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) и не предназначен для непосредственного использования из кода.This member supports the Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) infrastructure and is not intended to be used directly from your code.

ISupportInitialize.EndInit() ISupportInitialize.EndInit() ISupportInitialize.EndInit() ISupportInitialize.EndInit()

Этот член поддерживает инфраструктуру Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) и не предназначен для непосредственного использования из кода.This member supports the Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) infrastructure and is not intended to be used directly from your code.

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

Дополнительно