Condividi tramite


RelativeSource Classe

Definizione

Implementa un'estensione di markup che descrive il percorso dell'origine di associazione in relazione alla posizione della destinazione del binding.

public ref class RelativeSource : System::Windows::Markup::MarkupExtension, System::ComponentModel::ISupportInitialize
[System.Windows.Markup.MarkupExtensionReturnType(typeof(System.Windows.Data.RelativeSource))]
public class RelativeSource : System.Windows.Markup.MarkupExtension, System.ComponentModel.ISupportInitialize
[<System.Windows.Markup.MarkupExtensionReturnType(typeof(System.Windows.Data.RelativeSource))>]
type RelativeSource = class
    inherit MarkupExtension
    interface ISupportInitialize
Public Class RelativeSource
Inherits MarkupExtension
Implements ISupportInitialize
Ereditarietà
RelativeSource
Attributi
Implementazioni

Esempio

Nell'esempio seguente viene illustrato un trigger di stile che crea un ToolTip oggetto che segnala un messaggio di errore di convalida. Utilizzando la RelativeSource proprietà , il valore del setter viene associato al contenuto di errore dell'oggetto corrente TextBox ( TextBox utilizzando lo stile ). Per altre informazioni su questo esempio, vedere Procedura: Implementare la convalida dell'associazione.

<Style x:Key="textBoxInError" TargetType="{x:Type TextBox}">
  <Style.Triggers>
    <Trigger Property="Validation.HasError" Value="true">
      <Setter Property="ToolTip"
        Value="{Binding RelativeSource={x:Static RelativeSource.Self},
                        Path=(Validation.Errors)/ErrorContent}"/>
    </Trigger>
  </Style.Triggers>
</Style>

Nell'esempio seguente viene illustrata la Style definizione di un controllo personalizzato denominato NumericUpDown. La Text proprietà di TextBlock è associata all'oggetto Value dell'oggetto TemplatedParent, ovvero il NumericUpDown controllo a cui viene Style applicato in questo caso.

<!--ControlTemplate for NumericUpDown that inherits from
    Control.-->
<Style TargetType="{x:Type local:NumericUpDown}">
  <Setter Property="HorizontalAlignment" Value="Center"/>
  <Setter Property="VerticalAlignment" Value="Center"/>
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="{x:Type local:NumericUpDown}">
        <Grid Margin="3">
          <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition/>
          </Grid.RowDefinitions>
          <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
          </Grid.ColumnDefinitions>

          <Border BorderThickness="1" BorderBrush="Gray" 
                  Margin="2" Grid.RowSpan="2" 
                  VerticalAlignment="Center" HorizontalAlignment="Stretch">
                  
            <TextBlock Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Value}" 
                       Width="60" TextAlignment="Right" Padding="5"/>
          </Border>
          
          <RepeatButton Command="{x:Static local:NumericUpDown.IncreaseCommand}"  
                        Grid.Column="1" Grid.Row="0">Up</RepeatButton>
                        
          <RepeatButton Command="{x:Static local:NumericUpDown.DecreaseCommand}"
                        Grid.Column="1" Grid.Row="1">Down</RepeatButton>

        </Grid>

      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

Di seguito viene restituito il secondo ItemsControl rilevato nel percorso verso l'alto a partire dall'elemento di destinazione dell'associazione.

Binding myBinding = new Binding();
// Returns the second ItemsControl encountered on the upward path
// starting at the target element of the binding
myBinding.RelativeSource = new RelativeSource(
    RelativeSourceMode.FindAncestor, typeof(ItemsControl), 2);
Dim myBinding As New Binding()
' Returns the second ItemsControl encountered on the upward path
' starting at the target element of the binding
myBinding.RelativeSource = New RelativeSource(RelativeSourceMode.FindAncestor, GetType(ItemsControl), 2)

Commenti

Uno dei modi per specificare un'origine di associazione consiste nell'usare la Binding.RelativeSource proprietà . Questo è il tipo di proprietà di tale proprietà. RelativeSource è simultaneamente un'implementazione dell'estensione di markup e un oggetto dati. Quando l'estensione viene restituita (vedere ProvideValue), le informazioni pertinenti sono contenute nei dati. Lo scopo principale dell'estensione di markup è consentire una sintassi del costruttore di argomenti variabile in formato attributo, in modo che la FindAncestor modalità possa essere definita inline con i due argomenti aggiuntivi per il tipo predecessore e il livello che le altre modalità non richiedono.

Per informazioni XAML, vedi RelativeSource MarkupExtension.

Costruttori

RelativeSource()

Inizializza una nuova istanza della classe RelativeSource.

RelativeSource(RelativeSourceMode)

Inizializza una nuova istanza della classe RelativeSource con modalità iniziale.

RelativeSource(RelativeSourceMode, Type, Int32)

Inizializza una nuova istanza della classe RelativeSource con una modalità iniziale e qualificatori aggiuntivi per l'esame della struttura ad albero per trovare l'origine relativa desiderata.

Proprietà

AncestorLevel

Ottiene o imposta il livello di predecessore da cercare in modalità FindAncestor. Usare 1 per indicare quello più vicino all'elemento di destinazione del binding.

AncestorType

Ottiene o imposta il tipo di predecessore da cercare.

Mode

Ottiene o imposta un valore RelativeSourceMode che descrive il percorso dell'origine di associazione in relazione alla posizione della destinazione del binding.

PreviousData

Ottiene un valore statico utilizzato per restituire un oggetto RelativeSource costruito per la modalità PreviousData.

Self

Ottiene un valore statico utilizzato per restituire un oggetto RelativeSource costruito per la modalità Self.

TemplatedParent

Ottiene un valore statico utilizzato per restituire un oggetto RelativeSource costruito per la modalità TemplatedParent.

Metodi

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ProvideValue(IServiceProvider)

Restituisce un oggetto che deve essere impostato come valore sulla proprietà dell'oggetto di destinazione per questa estensione di markup. Per RelativeSource, questo è un altro oggetto RelativeSource che utilizza l'origine adatta per la modalità specificata.

ShouldSerializeAncestorLevel()

Indica se la proprietà AncestorLevel deve essere mantenuta.

ShouldSerializeAncestorType()

Indica se la proprietà AncestorType deve essere mantenuta.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

ISupportInitialize.BeginInit()

Questo membro supporta l'infrastruttura Windows Presentation Foundation (WPF) e non deve essere usato direttamente dal codice.

ISupportInitialize.EndInit()

Questo membro supporta l'infrastruttura Windows Presentation Foundation (WPF) e non deve essere usato direttamente dal codice.

Si applica a

Vedi anche