Поделиться через


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

Значение свойства

Объект, используемый как источник привязки.

Примеры

В следующем примере используется Person объект со строковым свойством с именем PersonName , определенным в SDKSample пространстве имен, как показано в первой выделенной строке. В выделенной строке <src> , содержащей элемент , он создает Person экземпляр объекта со значением PersonNameJoeсвойства . Это делается в разделе Resources, и ему присваивается 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>

Выделенная строка, содержащая элементы, <TextBlock> показывает, как выполнить привязку к свойству PersonName . В результате TextBlock элемент управления отображается со значением "Joe".

В следующем примере Source значениям Binding объектов присваиваются static свойства 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>

Полный пример см. в разделе Демонстрация привязки данных.

Комментарии

По умолчанию привязки наследуют контекст данных, заданный свойством DataContext , если он задан. Однако Source свойство является одним из способов явного задания источника и переопределения наследуемого Binding контекста данных. Если не требуется функциональность установки области применения, в которой несколько свойств наследуют один и тот же контекст данных, можно использовать свойство Source вместо свойства DataContext.

Свойства Binding.ElementName и Binding.RelativeSource также позволяют явно задать источник привязки. Однако для каждой привязки следует задать только одно из трех свойств, ElementName, Sourceи RelativeSource, в противном случае может возникнуть конфликт. Это свойство создает исключение в случае конфликта источника привязки.

Чтобы очистить это свойство, присвойте ему значение DependencyProperty.UnsetValue.

Использование атрибута XAML

<object Source="object"/>  

Значения XAML

object
Существующий объект . Чтобы ссылаться на существующий объект, используйте расширение разметки StaticResource.

Применяется к