Binding.RelativeSource Proprietà

Definizione

Ottiene o imposta l'origine di associazione specificandone il percorso in relazione alla posizione della destinazione del binding. Viene usata più spesso nei binding all'interno dei modelli di controllo XAML.

C#
public RelativeSource RelativeSource { get; set; }
XAML
<Binding RelativeSource="{RelativeSource TemplatedParent}"/>
-or-
<Binding RelativeSource="{RelativeSource Self}"/>

Valore della proprietà

Posizione relativa dell'origine di associazione da usare. Il valore predefinito è Null.

Esempio

Questo esempio XAML viene tratto dal file generic.xaml che definisce gli stati di visualizzazione predefiniti per tutti i controlli XAML. Questo particolare segmento è uno degli stati visivi per il controllo ToggleSwitch . In questo caso, una delle animazioni definite dalle proprietà dello stato visivo fa riferimento alle proprietà del controllo esistente in modo che i modelli possano accedervi e ottenere valori di runtime che modificano l'animazione. Per il modello XAML per ottenere le proprietà dal controllo in cui viene applicato il modello, l'associazione deve essere usata {RelativeSource TemplatedParent} come valore RelativeSource.

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

Commenti

Source, RelativeSource e ElementName si escludono a vicenda in un'associazione. Se è stato impostato uno di questi attributi, l'impostazione di uno degli altri due in un'associazione (tramite XAML o tramite codice) causerà un'eccezione. L'impostazione di RelativeSource in XAML richiede sempre l'uso dell'estensione di markup {RelativeSource}. Questo vale anche se si sta creando l'intera associazione come estensione di markup {Binding}, nel qual caso l'estensione di markup {RelativeSource} viene annidata all'interno del componente RelativeSource dell'espressione.

Non è possibile impostare i valori delle proprietà di un oggetto Binding dopo che tale associazione è stata associata a un elemento di destinazione e a una proprietà di destinazione. Se si tenta di ottenere un'eccezione di runtime.

Si applica a

Prodotto Versioni
WinRT Build 10240, Build 10586, Build 14383, Build 15063, Build 16299, Build 17134, Build 17763, Build 18362, Build 19041, Build 20348, Build 22000, Build 22621, Build 26100

Vedi anche