Binding.Source Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Obtém ou define o objeto a ser usado como a origem da associação.
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
Valor da propriedade
O objeto a ser usado como a origem da associação.
Exemplos
O exemplo a seguir usa um Person
objeto com uma propriedade de cadeia de caracteres chamada PersonName
que é definida no SDKSample
namespace, como mostra a primeira linha realçada. Na linha realçada que contém o <src>
elemento , ele cria uma instância do Person
objeto com um PersonName
valor de propriedade de Joe
. Isso é feito na Resources
seção e atribuído a um 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>
A linha realçada que contém os <TextBlock>
elementos mostra como associar à PersonName
propriedade . Como resultado, o TextBlock controle aparece com o valor "Joe".
No exemplo a seguir, os Source valores dos Binding objetos são definidos como a static
propriedade 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>
Para obter o exemplo completo, consulte Demonstração de Associação de Dados.
Comentários
Por padrão, as associações herdam o contexto de dados especificado pela DataContext
propriedade , se um tiver sido definido. No entanto, a Source propriedade é uma das maneiras pelas quais você pode definir explicitamente a origem de um Binding e substituir o contexto de dados herdado. Se você não precisar da funcionalidade de estabelecer um escopo no qual várias propriedades herdam o mesmo contexto de dados, você poderá usar a Source propriedade em vez da DataContext
propriedade .
As Binding.ElementName propriedades e Binding.RelativeSource também permitem definir explicitamente a origem da associação. No entanto, apenas uma das três propriedades, ElementName, Sourcee RelativeSource, deve ser definida para cada associação ou um conflito pode ocorrer. Essa propriedade gerará uma exceção se houver um conflito de origem de associação.
Para limpar essa propriedade, defina-a como DependencyProperty.UnsetValue.
Uso do Atributo XAML
<object Source="object"/>
Valores XAML
object
Um objeto existente. Para se referir a um objeto existente, use a Extensão de Marcação StaticResource