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
экземпляр объекта со значением PersonName
Joe
свойства . Это делается в разделе 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.