RelativeSource Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Implementiert eine Markuperweiterung, die den Speicherort der Bindungsquelle relativ zur Position des Bindungsziels beschreibt.
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
- Vererbung
- Attribute
- Implementiert
Beispiele
Im folgenden Beispiel wird ein Formatauslöser gezeigt, der eine Überprüfungsfehlermeldung erstellt ToolTip . RelativeSource Mithilfe der Eigenschaft bindet der Wert des Setter an den Fehlerinhalt des Aktuellen TextBox (mit TextBox der Formatvorlage). Weitere Informationen zu diesem Beispiel finden Sie unter How to: Implementieren der Bindungsüberprüfung.
<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>
Das folgende Beispiel zeigt die Style Definition eines benutzerdefinierten Steuerelements namens NumericUpDown
. Die Text Eigenschaft des TextBlock Objekts ist Value
an das Objekt gebunden, TemplatedParent
das das ist, was das NumericUpDown
Steuerelement ist, auf das dies Style in diesem Fall angewendet wird.
<!--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>
Im Folgenden wird der zweite ItemsControl Aufwärtspfad zurückgegeben, der am Zielelement der Bindung beginnt.
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)
Hinweise
Eine der Möglichkeiten zum Angeben einer Bindungsquelle besteht darin, die Binding.RelativeSource Eigenschaft zu verwenden. Dies ist der Eigenschaftstyp dieser Eigenschaft. RelativeSource ist gleichzeitig eine Markuperweiterungsimplementierung und ein Datenobjekt. Wenn die Erweiterung selbst zurückgibt (siehe ProvideValue), werden die relevanten Informationen in den Daten enthalten. Der Hauptzweck der Markuperweiterung besteht darin, eine Syntax des Variablenargumentkonstruktors in Attributformular zuzulassen, sodass der FindAncestor Modus inline mit den beiden zusätzlichen Argumenten für den Vorgängertyp und die Ebene definiert werden kann, die die anderen Modi nicht benötigen.
Informationen zu XAML finden Sie unter RelativeSource MarkupExtension.
Konstruktoren
RelativeSource() |
Initialisiert eine neue Instanz der RelativeSource-Klasse. |
RelativeSource(RelativeSourceMode) |
Initialisiert eine neue Instanz der RelativeSource-Klasse mit einem Anfangsmodus. |
RelativeSource(RelativeSourceMode, Type, Int32) |
Initialisiert eine neue Instanz der RelativeSource-Klasse mit einem Anfangsmodus und zusätzlichen Qualifizierern, die bei der Suche nach der gewünschten relativen Quelle die Struktur durchlaufen. |
Eigenschaften
AncestorLevel |
Ruft die zu beachtende Vorgängerebene im FindAncestor-Modus ab oder legt diese fest. Verwenden Sie 1, um die Ebene anzugeben, die dem Bindungszielelement am nächsten ist. |
AncestorType |
Ruft den Typ des gesuchten übergeordneten Elements ab oder legt ihn fest. |
Mode |
Ruft einen RelativeSourceMode-Wert ab, der den Speicherort der Bindungsquelle relativ zur Position des Bindungsziels beschreibt, oder legt diesen fest. |
PreviousData |
Ruft einen statischen Wert ab, mit dem eine für den RelativeSource-Modus erstellte PreviousData zurückgegeben wird. |
Self |
Ruft einen statischen Wert ab, mit dem eine für den RelativeSource-Modus erstellte Self zurückgegeben wird. |
TemplatedParent |
Ruft einen statischen Wert ab, mit dem eine für den RelativeSource-Modus erstellte TemplatedParent zurückgegeben wird. |
Methoden
Equals(Object) |
Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist. (Geerbt von Object) |
GetHashCode() |
Fungiert als Standardhashfunktion. (Geerbt von Object) |
GetType() |
Ruft den Type der aktuellen Instanz ab. (Geerbt von Object) |
MemberwiseClone() |
Erstellt eine flache Kopie des aktuellen Object. (Geerbt von Object) |
ProvideValue(IServiceProvider) |
Gibt ein Objekt zurück, das als Wert für die Eigenschaft des Zielobjekts für diese Markuperweiterung festgelegt werden muss. Für die RelativeSource ist dies eine andere RelativeSource, die die entsprechende Quelle für den angegebenen Modus verwendet. |
ShouldSerializeAncestorLevel() |
Gibt an, ob die AncestorLevel-Eigenschaft beibehalten werden soll. |
ShouldSerializeAncestorType() |
Gibt an, ob die AncestorType-Eigenschaft beibehalten werden soll. |
ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |
Explizite Schnittstellenimplementierungen
ISupportInitialize.BeginInit() |
Dieses Mitglied unterstützt die Windows Presentation Foundation (WPF)-Infrastruktur und soll nicht direkt von Ihrem Code verwendet werden. |
ISupportInitialize.EndInit() |
Dieses Mitglied unterstützt die Windows Presentation Foundation (WPF)-Infrastruktur und soll nicht direkt von Ihrem Code verwendet werden. |