RelativeSource Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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à
- 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. |