Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original
Dieser Artikel wurde noch nicht bewertet - Dieses Thema bewerten.

RelativeSource-Klasse

Implementiert eine Markuperweiterung, mit der die Position der Bindungsquelle relativ zur Position des Bindungsziels beschrieben wird.

Namespace:  System.Windows.Data
Assembly:  PresentationFramework (in PresentationFramework.dll)
XMLNS für XAML: http://schemas.microsoft.com/winfx/2006/xaml/presentation, http://schemas.microsoft.com/netfx/2007/xaml/presentation
[MarkupExtensionReturnTypeAttribute(typeof(RelativeSource))]
public class RelativeSource : MarkupExtension, 
	ISupportInitialize

Der RelativeSource-Typ macht die folgenden Member verfügbar.

  NameBeschreibung
Öffentliche MethodeRelativeSource()Initialisiert eine neue Instanz der RelativeSource-Klasse.
Öffentliche MethodeRelativeSource(RelativeSourceMode)Initialisiert eine neue Instanz der RelativeSource-Klasse mit einem Anfangsmodus.
Öffentliche MethodeRelativeSource(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.
Zum Seitenanfang
  NameBeschreibung
Öffentliche EigenschaftAncestorLevelRuft die Ebene des im FindAncestor-Modus gesuchten übergeordneten Elements ab oder legt diese Ebene fest. Geben Sie mit 1 die Ebene an, die dem Bindungsziel-Element am nächsten ist.
Öffentliche EigenschaftAncestorTypeRuft den Typ des gesuchten übergeordneten Elements ab oder legt ihn fest.
Öffentliche EigenschaftModeRuft einen RelativeSourceMode-Wert ab, der den Speicherort der Bindungsquelle relativ zur Position des Bindungsziels angibt, oder legt diesen Wert fest.
Öffentliche EigenschaftStatischer MemberPreviousDataRuft einen statischen Wert ab, mit dem eine für den PreviousData-Modus erstellte RelativeSource zurückgegeben wird.
Öffentliche EigenschaftStatischer MemberSelfRuft einen statischen Wert ab, mit dem eine für den Self-Modus erstellte RelativeSource zurückgegeben wird.
Öffentliche EigenschaftStatischer MemberTemplatedParentRuft einen statischen Wert ab, mit dem eine für den TemplatedParent-Modus erstellte RelativeSource zurückgegeben wird.
Zum Seitenanfang
  NameBeschreibung
Öffentliche MethodeEquals(Object)Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist. (Von Object geerbt.)
Geschützte MethodeFinalize Gibt einem Objekt Gelegenheit, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der Garbage Collection freigegeben wird. (Von Object geerbt.)
Öffentliche MethodeGetHashCodeFungiert als Hashfunktion für einen bestimmten Typ. (Von Object geerbt.)
Öffentliche MethodeGetTypeRuft den Type der aktuellen Instanz ab. (Von Object geerbt.)
Geschützte MethodeMemberwiseCloneErstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.)
Öffentliche MethodeProvideValueGibt 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. (Überschreibt MarkupExtension.ProvideValue(IServiceProvider).)
Öffentliche MethodeShouldSerializeAncestorLevelGibt an, ob die AncestorLevel-Eigenschaft beibehalten werden soll.
Öffentliche MethodeShouldSerializeAncestorTypeGibt an, ob die AncestorType-Eigenschaft beibehalten werden soll.
Öffentliche MethodeToStringGibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Von Object geerbt.)
Zum Seitenanfang
  NameBeschreibung
Explizite SchnittstellenimplementierungPrivate MethodeISupportInitialize.BeginInitDer Member unterstützt die Windows Presentation Foundation (WPF)-Infrastruktur und ist nicht für die direkte Verwendung im Code vorgesehen.
Explizite SchnittstellenimplementierungPrivate MethodeISupportInitialize.EndInitDer Member unterstützt die Windows Presentation Foundation (WPF)-Infrastruktur und ist nicht für die direkte Verwendung im Code vorgesehen.
Zum Seitenanfang

Eine der Möglichkeiten zum Angeben einer Bindungsquelle besteht in der Verwendung der Binding.RelativeSource-Eigenschaft. Dies ist der Eigenschaftentyp dieser Eigenschaft. Die RelativeSource ist gleichzeitig eine Implementierung einer Markuperweiterung und ein Datenobjekt. Wenn die Erweiterung (siehe ProvideValue) sich selbst zurückgibt, sind die relevanten Informationen in den Daten enthalten. Der Hauptzweck der Markuperweiterung besteht darin, dass eine Konstruktorsyntax mit variablen Argumenten in Attributform verwendet werden kann. Dies ermöglicht die Inlinedefinition des FindAncestor-Modus mit zwei zusätzlichen Argumenten für den Typ und die Ebene des übergeordneten Elements, die für die anderen Modi nicht erforderlich sind.

Weitere Informationen zu XAML finden Sie unter RelativeSource-Markuperweiterung.

Das folgende Beispiel zeigt einen Formattrigger, mit dem ein ToolTip zur Anzeige einer Validierungsfehlermeldung erstellt wird. Mit der RelativeSource-Eigenschaft wird der Wert des Setters an den Fehlerinhalt der aktuellen TextBox (die TextBox, die das Format verwendet) gebunden. Weitere Informationen zu diesem Beispiel finden Sie unter Gewusst wie: Implementieren der Bindungsvalidierung.


<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)[0].ErrorContent}"/>
    </Trigger>
  </Style.Triggers>
</Style>


Im folgenden Beispiel wird die Style-Definition des benutzerdefinierten Steuerelements NumericUpDown veranschaulicht. Die Text-Eigenschaft von TextBlock ist an den Value des Objekts gebunden, das das TemplatedParent ist. Dabei handelt es sich um das NumericUpDown-Steuerelement, auf das dieser 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>


Das vollständige Beispiel finden Sie unter NumericUpDown Custom Control with Theme and UI Automation Support Sample.

Im Folgenden wird das zweite ItemsControl auf dem Aufwärtspfad zurückgegeben, der mit dem Zielelement der Bindung beginnt.


		  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)



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);


.NET Framework

Unterstützt in: 4.5, 4, 3.5, 3.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.
Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.
Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)

Community-Beiträge

HINZUFÜGEN
© 2013 Microsoft. Alle Rechte vorbehalten.