Язык

Binding.RelativeSource Свойство

Определение

Возвращает или задает источник привязки, указав его расположение относительно положения целевого объекта привязки. Это чаще всего используется в привязках в шаблонах элементов управления XAML.

RelativeSource RelativeSource();

void RelativeSource(RelativeSource value);
public RelativeSource RelativeSource { get; set; }
var relativeSource = binding.relativeSource;
binding.relativeSource = relativeSource;
Public Property RelativeSource As RelativeSource
<Binding RelativeSource="{RelativeSource TemplatedParent}"/>
-or-
<Binding RelativeSource="{RelativeSource Self}"/>

Значение свойства

Относительное расположение используемого источника привязки. Значение по умолчанию равно NULL.

Примеры

Этот пример XAML взят из файла generic.xaml, который определяет визуальные состояния по умолчанию для всех элементов управления XAML. Этот конкретный сегмент является одним из визуальных состояний элемента управления ToggleSwitch . Здесь одна из анимаций, определенных визуальным состоянием, ссылается на свойства элемента управления, существующего специально, чтобы шаблоны могли получать к ним доступ и получать значения времени выполнения, изменяющие анимацию. Для получения свойств из элемента управления, в котором применяется шаблон, привязка должна использоваться {RelativeSource TemplatedParent} в качестве значения RelativeSource.

<VisualStateGroup x:Name="ToggleStates">
  <VisualStateGroup.Transitions>
    <VisualTransition x:Name="DraggingToOnTransition"
      From="Dragging"
      To="On"
      GeneratedDuration="0">
      <Storyboard>
        <RepositionThemeAnimation TargetName="SwitchKnob" 
          FromHorizontalOffset="
          {Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.KnobCurrentToOnOffset}"
        />
        <RepositionThemeAnimation TargetName="SwitchCurtain"
          FromHorizontalOffset="
          {Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.CurtainCurrentToOnOffset}"
        />
      </Storyboard>
    </VisualTransition>
...
  </VisualStateGroup.Transitions>
</VisualStateGroup>

Комментарии

Source, RelativeSource и ElementName являются взаимоисключающими в привязке. Если у вас есть один из этих атрибутов, то при настройке одной из двух других в привязке (с помощью XAML или кода) возникнет исключение. Параметр RelativeSource в XAML всегда требует использования расширения разметки {RelativeSource}. Это также верно, если вы создаете всю привязку в виде расширения разметки {Binding}, в этом случае расширение разметки {RelativeSource} вложено в компонент RelativeSource выражения.

Нельзя задать значения свойств объекта Binding после подключения привязки к целевому элементу и целевому свойству. При попытке этого вы получите исключение во время выполнения.

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

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