Condividi tramite


Binding.Source Proprietà

Definizione

Ottiene o imposta l'oggetto da usare come origine di associazione.

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

Valore della proprietà

Oggetto da usare come origine di associazione.

Esempio

Nell'esempio SDKSample seguente viene usato un Person oggetto con una proprietà stringa denominata PersonName definita nello spazio dei nomi, come mostra la prima riga evidenziata. Nella riga evidenziata contenente l'elemento, crea un'istanza dell'oggetto <src>Person con un PersonName valore di proprietà di Joe. Questa operazione viene eseguita nella Resources sezione e assegnata a un x:Keyoggetto .

<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 riga evidenziata contenente gli <TextBlock> elementi mostra come associare alla PersonName proprietà. Di conseguenza, il TextBlock controllo viene visualizzato con il valore "Joe".

Nell'esempio seguente i Source valori degli Binding oggetti vengono impostati sulla static proprietà 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>

Per l'esempio completo, vedere Demo data binding.

Commenti

Per impostazione predefinita, le associazioni ereditano il contesto di dati specificato dalla DataContext proprietà, se è stato impostato. Tuttavia, la Source proprietà è uno dei modi in cui è possibile impostare in modo esplicito l'origine di un Binding oggetto e eseguire l'override del contesto di dati ereditato. Se non è necessaria la funzionalità di stabilire un ambito in cui diverse proprietà ereditano lo stesso contesto di dati, è possibile usare la proprietà anziché la SourceDataContext proprietà.

Le Binding.ElementName proprietà e Binding.RelativeSource consentono anche di impostare l'origine dell'associazione in modo esplicito. Tuttavia, solo una delle tre proprietà, ElementName, Sourcee RelativeSource, deve essere impostata per ogni associazione o può verificarsi un conflitto. Questa proprietà genera un'eccezione se si verifica un conflitto di origine di associazione.

Per cancellare questa proprietà, impostarla su DependencyProperty.UnsetValue.

Uso della sintassi XAML per gli attributi

<object Source="object"/>  

Valori XAML

object
Oggetto esistente. Per fare riferimento a un oggetto esistente, usare l'estensione di markup StaticResource

Si applica a