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
Das folgende Beispiel zeigt einen Formatauslöser, der eine ToolTip Fehlermeldung zur Überprüfung meldet. Bei Verwendung der RelativeSource Eigenschaft wird der Wert des Setters an den Fehlerinhalt des aktuellen TextBox (mit TextBox der Formatvorlage) gebunden. Weitere Informationen zu diesem Beispiel finden Sie unter How to: Implement Binding Validation.
<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, das aufgerufen wird NumericUpDown. Die Text Eigenschaft des TextBlock Objekts ist an das Value Objekt gebunden, das das TemplatedParentSteuerelement ist NumericUpDown , 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 mit dem 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 Methoden 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 sich selbst zurückgibt (siehe ProvideValue), sind die relevanten Informationen in den Daten enthalten. Der Hauptzweck der Markuperweiterung besteht darin, eine Syntax des Variablenargumentkonstruktors in Attributform zuzulassen, damit der FindAncestor Modus inline mit den beiden zusätzlichen Argumenten für vorgängertyp und -ebene definiert werden kann, die für die anderen Modi nicht erforderlich sind.
Informationen zu XAML finden Sie unter RelativeSource MarkupExtension.
Konstruktoren
| Name | Beschreibung |
|---|---|
| RelativeSource() |
Initialisiert eine neue Instanz der RelativeSource-Klasse. |
| RelativeSource(RelativeSourceMode, Type, Int32) |
Initialisiert eine neue Instanz der RelativeSource Klasse mit einem Anfänglichen Modus und zusätzlichen Qualifizierern zur Strukturbegehung, um die gewünschte relative Quelle zu finden. |
| RelativeSource(RelativeSourceMode) |
Initialisiert eine neue Instanz der RelativeSource Klasse mit einem Anfangsmodus. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| AncestorLevel |
Ruft die Ebene des Vorgängers im Modus ab, nach der gesucht werden soll, FindAncestor oder legt diese fest. Verwenden Sie "1", um das Bindungszielelement am nächsten anzugeben. |
| AncestorType |
Ruft den Typ des Vorgängers ab, nach dem gesucht werden soll, oder legt diesen fest. |
| Mode |
Dient zum Abrufen oder Festlegen eines RelativeSourceMode Werts, der die Position der Bindungsquelle relativ zur Position des Bindungsziels beschreibt. |
| PreviousData |
Ruft einen statischen Wert ab, der verwendet wird, um einen RelativeSource für den PreviousData Modus konstruierten Wert zurückzugeben. |
| Self |
Ruft einen statischen Wert ab, der verwendet wird, um einen RelativeSource für den Self Modus konstruierten Wert zurückzugeben. |
| TemplatedParent |
Ruft einen statischen Wert ab, der verwendet wird, um einen RelativeSource für den TemplatedParent Modus konstruierten Wert zurückzugeben. |
Methoden
| Name | Beschreibung |
|---|---|
| Equals(Object) |
Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht. (Geerbt von Object) |
| GetHashCode() |
Dient als Standardhashfunktion. (Geerbt von Object) |
| GetType() |
Ruft die Type der aktuellen Instanz ab. (Geerbt von Object) |
| MemberwiseClone() |
Erstellt eine flache Kopie der 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 soll. Für RelativeSource, dies ist 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
| Name | Beschreibung |
|---|---|
| ISupportInitialize.BeginInit() |
Dieses Mitglied unterstützt die Windows Presentation Foundation (WPF)-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen. |
| ISupportInitialize.EndInit() |
Dieses Mitglied unterstützt die Windows Presentation Foundation (WPF)-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen. |