Binding.Source Propiedad

Definición

Obtiene o establece el objeto que se va a usar como origen de enlace.Gets or sets the object to use as the binding source.

public:
 property System::Object ^ Source { System::Object ^ get(); void set(System::Object ^ value); };
public object Source { get; set; }
member this.Source : obj with get, set
Public Property Source As Object

Valor de propiedad

Objeto que se va a usar como origen de enlace.The object to use as the binding source.

Ejemplos

En el ejemplo siguiente se usa un objeto Person con una propiedad de cadena denominada PersonName que se define en el espacio de nombres SDKSample, como se muestra en la primera línea resaltada.The following example uses a Person object with a string property named PersonName that is defined in the SDKSample namespace, as the first highlighted line shows. En la línea resaltada que contiene el elemento <src>, crea una instancia del objeto Person con un valor de propiedad PersonName de Joe.In the highlighted line that contains the <src> element, it instantiates the Person object with a PersonName property value of Joe. Esto se hace en la sección Resources y se le asigna un x:Key.This is done in the Resources section and assigned an x:Key.

<Window
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:src="clr-namespace:SDKSample"
  SizeToContent="WidthAndHeight"
  Title="Simple Data Binding Sample">

  <Window.Resources>
    <src:Person x:Key="myDataSource" PersonName="Joe"/>
    <Style TargetType="{x:Type Label}">
      <Setter Property="DockPanel.Dock" Value="Top"/>
      <Setter Property="FontSize" Value="12"/>
    </Style>
    <Style TargetType="{x:Type TextBox}">
      <Setter Property="Width" Value="100"/>
      <Setter Property="Height" Value="25"/>
      <Setter Property="DockPanel.Dock" Value="Top"/>
    </Style>
    <Style TargetType="{x:Type TextBlock}">
      <Setter Property="Width" Value="100"/>
      <Setter Property="Height" Value="25"/>
      <Setter Property="DockPanel.Dock" Value="Top"/>
      <Setter Property="Padding" Value="3"/>
    </Style>
  </Window.Resources>
  <Border Margin="5" BorderBrush="Aqua" BorderThickness="1" Padding="8" CornerRadius="3">
    <DockPanel Width="200" Height="100" Margin="35">
      <Label>Enter a Name:</Label>
      <TextBox>
        <TextBox.Text>
          <Binding Source="{StaticResource myDataSource}" Path="PersonName"
                   UpdateSourceTrigger="PropertyChanged"/>
        </TextBox.Text>
      </TextBox>
      
      <Label>The name you entered:</Label>
      <TextBlock Text="{Binding Source={StaticResource myDataSource}, Path=PersonName}"/>
    </DockPanel>
  </Border>
</Window>

La línea resaltada que contiene los elementos <TextBlock> muestra cómo enlazar a la propiedad PersonName.The highlighted line that contains the <TextBlock> elements shows how to bind to the PersonName property. Como resultado, el control TextBlock aparece con el valor "Joe".As a result, the TextBlock control appears with the value "Joe".

En el ejemplo siguiente, los valores de Source de los objetos Binding se establecen en la propiedad static Application.Current:In the following example, the Source values of the Binding objects are set to the static property Application.Current:

<ComboBox.IsEnabled>
    <MultiBinding Converter="{StaticResource specialFeaturesConverter}">
        <Binding Path="CurrentUser.Rating" 
          Source="{x:Static Application.Current}"/>
        <Binding Path="CurrentUser.MemberSince" 
    Source="{x:Static Application.Current}"/>
    </MultiBinding>
</ComboBox.IsEnabled>

Para ver el ejemplo completo, consulte Data Binding demo.For the full example, see Data Binding Demo.

Comentarios

De forma predeterminada, los enlaces heredan el contexto de datos especificado por la propiedad DataContext, si se ha establecido uno.By default, bindings inherit the data context specified by the DataContext property, if one has been set. Sin embargo, la propiedad Source es una de las formas en que se puede establecer explícitamente el origen de un Binding y reemplazar el contexto de datos heredado.However, the Source property is one of the ways you can explicitly set the source of a Binding and override the inherited data context. Si no necesita la funcionalidad de establecer un ámbito en el que varias propiedades heredan el mismo contexto de datos, puede usar la propiedad Source en lugar de la propiedad DataContext.If you do not need the functionality of establishing a scope in which several properties inherit the same data context, you can use the Source property instead of the DataContext property.

Las propiedades Binding.ElementName y Binding.RelativeSource también permiten establecer el origen del enlace explícitamente.The Binding.ElementName and Binding.RelativeSource properties also enable you to set the source of the binding explicitly. Sin embargo, solo se debe establecer una de las tres propiedades, ElementName, Sourcey RelativeSource, para cada enlace, o puede producirse un conflicto.However, only one of the three properties, ElementName, Source, and RelativeSource, should be set for each binding, or a conflict can occur. Esta propiedad produce una excepción si hay un conflicto de origen de enlace.This property throws an exception if there is a binding source conflict.

Para borrar esta propiedad, establézcala en DependencyProperty.UnsetValue.To clear this property, set it to DependencyProperty.UnsetValue.

Uso de atributos XAMLXAML Attribute Usage

<object Source="object"/>  

Valores XAMLXAML Values

objectobject
Objeto existente.An existing object. Para hacer referencia a un objeto existente, use la extensión de marcado StaticResource .To refer to an existing object, use the StaticResource Markup Extension

Se aplica a