Freigeben über


RelativeSource Klasse

Definition

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
RelativeSource
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, TemplatedParentdas 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.

Gilt für

Siehe auch