Compartir a través de


Binding.Source Propiedad

Definición

Obtiene o establece el objeto que se va a usar como origen de enlace.

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.

Ejemplos

En el ejemplo siguiente se usa un Person objeto con una propiedad de cadena denominada PersonName que se define en el SDKSample espacio de nombres, como se muestra en la primera línea resaltada. En la línea resaltada que contiene el <src> elemento , crea una instancia del Person objeto con un PersonName valor de propiedad de Joe. Esto se hace en la sección Resources y se le asigna un 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 <TextBlock> elementos muestra cómo enlazar a la PersonName propiedad . Como resultado, el TextBlock control aparece con el valor "Joe".

En el ejemplo siguiente, los Source valores de los Binding objetos se establecen en la static propiedad 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 obtener el ejemplo completo, consulte Demostración de enlace de datos.

Comentarios

De forma predeterminada, los enlaces heredan el contexto de datos especificado por la DataContext propiedad , si se ha establecido uno. Sin embargo, la Source propiedad es una de las formas en que se puede establecer explícitamente el origen de e Binding invalidar el contexto de datos heredado. Si no necesita la funcionalidad de establecimiento de un ámbito en el que varias propiedades heredan el mismo contexto de datos, puede usar la propiedad Source en lugar de la propiedad DataContext.

Las Binding.ElementName propiedades y Binding.RelativeSource también permiten establecer explícitamente el origen del enlace. Sin embargo, solo se debe establecer una de las tres propiedades, ElementName, Sourcey RelativeSource, para cada enlace o puede producirse un conflicto. Esta propiedad produce una excepción si hay un conflicto de origen de enlace.

Para borrar esta propiedad, establézcala en DependencyProperty.UnsetValue.

Uso de atributos XAML

<object Source="object"/>  

Valores XAML

object
Objeto existente. Para hacer referencia a un objeto existente, use la extensión de marcado StaticResource.

Se aplica a