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


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 элемент управления отображается со значением "Джо".

В следующем примере Source значения объектов задаются свойством staticApplication.Current:Binding

<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.RelativeSource Свойства Binding.ElementName также позволяют явно задать источник привязки. Однако для каждой привязки может быть задано только одно из трех свойств, ElementNameSourceа RelativeSourceтакже может возникнуть конфликт. Это свойство создает исключение, если существует конфликт источника привязки.

Чтобы очистить это свойство, задайте для него значение DependencyProperty.UnsetValue.

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

<object Source="object"/>

Значения XAML

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

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