Partilhar via


Binding.Source Propriedade

Definição

Obtém ou define o objeto a ser usado como a origem da associação.

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 da propriedade

O objeto a ser usado como a origem da associação.

Exemplos

O exemplo a seguir usa um Person objeto com uma propriedade de cadeia de caracteres chamada PersonName que é definida no SDKSample namespace, como mostra a primeira linha realçada. Na linha realçada que contém o <src> elemento , ele cria uma instância do Person objeto com um PersonName valor de propriedade de Joe. Isso é feito na Resources seção e atribuído a um 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>

A linha realçada que contém os <TextBlock> elementos mostra como associar à PersonName propriedade . Como resultado, o TextBlock controle aparece com o valor "Joe".

No exemplo a seguir, os Source valores dos Binding objetos são definidos como a static propriedade 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 obter o exemplo completo, consulte Demonstração de Associação de Dados.

Comentários

Por padrão, as associações herdam o contexto de dados especificado pela DataContext propriedade , se um tiver sido definido. No entanto, a Source propriedade é uma das maneiras pelas quais você pode definir explicitamente a origem de um Binding e substituir o contexto de dados herdado. Se você não precisar da funcionalidade de estabelecer um escopo no qual várias propriedades herdam o mesmo contexto de dados, você poderá usar a Source propriedade em vez da DataContext propriedade .

As Binding.ElementName propriedades e Binding.RelativeSource também permitem definir explicitamente a origem da associação. No entanto, apenas uma das três propriedades, ElementName, Sourcee RelativeSource, deve ser definida para cada associação ou um conflito pode ocorrer. Essa propriedade gerará uma exceção se houver um conflito de origem de associação.

Para limpar essa propriedade, defina-a como DependencyProperty.UnsetValue.

Uso do Atributo XAML

<object Source="object"/>  

Valores XAML

object
Um objeto existente. Para se referir a um objeto existente, use a Extensão de Marcação StaticResource

Aplica-se a