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 或透過程式碼) 設定系結 (系結中的其中一個其他兩個,都會導致例外狀況。 在 XAML 中設定 RelativeSource 一律需要使用 {RelativeSource} 標記延伸。 如果您要將整個系結建立為 {Binding} 標記延伸,在此情況下 ,{RelativeSource} 標記延伸 會巢狀于運算式的 RelativeSource 元件內。

系結附加至目標專案和目標屬性之後,就無法設定 Binding 物件的屬性值。 如果您嘗試這樣做,將會收到運行時例外狀況。

適用於

另請參閱