Binding.RelativeSource 屬性
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
透過指定繫結來源對繫結目標的相對位置,取得或設定繫結來源。 這最常用於 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 物件的屬性值。 如果您嘗試這樣做,將會收到執行時間例外狀況。