Condividi tramite


Binding.Source Proprietà

Definizione

Ottiene o imposta l'oggetto da utilizzare 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 utilizzare come origine di associazione.

Esempio

Nell'esempio seguente viene utilizzato un Person oggetto con una proprietà stringa denominata PersonName definita nello spazio dei SDKSample nomi, come illustrato nella prima riga evidenziata. Nella riga evidenziata che contiene l'elemento crea un'istanza dell'oggetto <src>Person con un PersonName valore della proprietà .Joe Questa operazione viene eseguita nella Resources sezione e assegnata a un oggetto 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 riga evidenziata che contiene gli elementi mostra come eseguire l'associazione <TextBlock>PersonName alla 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>

Commenti

Per impostazione predefinita, le associazioni ereditano il contesto dati specificato dalla DataContext proprietà , se ne è stato impostato uno. Tuttavia, la Source proprietà è uno dei modi in cui è possibile impostare in modo esplicito l'origine di un Binding oggetto ed eseguire l'override del contesto dati ereditato. Se non è necessaria la funzionalità di definizione di un ambito in cui diverse proprietà ereditano lo stesso contesto dati, è possibile utilizzare la Source proprietà anziché la DataContext 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 dell'associazione.

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

Utilizzo degli attributi XAML

<object Source="object"/>

Valori XAML

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

Si applica a