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


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 . Здесь одна из анимаций, определяемых визуальным состоянием, ссылается на свойства элемента управления, которые существуют специально, чтобы шаблоны могли обращаться к ним и получать значения времени выполнения, изменяющие анимацию. Чтобы XAML шаблона получает свойства из элемента управления, к которому применяется шаблон, привязка должна использовать {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 после того, как привязка будет присоединена к целевому элементу и целевому свойству. Если вы попытаетесь сделать это, вы получите исключение во время выполнения.

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

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