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

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.

Gilt für:

Weitere Informationen