Condividi tramite


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.

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}"/>

Valore della proprietà

Percorso relativo dell'origine di associazione da utilizzare. Il valore predefinito è Null.

Esempio

Questo esempio XAML è tratto dal file generic.xaml che definisce gli stati di visualizzazione predefiniti per tutti i controlli XAML. Questo particolare segmento è uno degli stati di visualizzazione per il controllo ToggleSwitch . In questo caso, una delle animazioni definite dallo stato di visualizzazione fa riferimento alle proprietà del controllo esistenti in modo che i modelli possano accedervi e ottenere valori di runtime che modificano l'animazione. Affinché il codice XAML del modello ottiene le proprietà dal controllo in cui viene applicato il modello, l'associazione deve usare {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 hai impostato uno di questi attributi, l'impostazione di uno degli altri due in un'associazione (tramite XAML o tramite codice) genererà un'eccezione. L'impostazione di RelativeSource in XAML richiede sempre l'uso dell'estensione di markup {RelativeSource}. Ciò vale anche se si sta creando l'intera associazione come estensione di markup {Binding}, nel qual caso l'estensione di markup {RelativeSource} è 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 in fase di esecuzione.

Si applica a

Vedi anche