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.

public RelativeSource RelativeSource { get; set; }
<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.

<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

Vedi anche