Binding.Source Egenskap

Definition

Hämtar eller anger objektet som ska användas som bindningskälla.

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

Egenskapsvärde

Objektet som ska användas som bindningskälla.

Exempel

I följande exempel används ett Person objekt med en strängegenskap med namnet PersonName som definieras i SDKSample namnområdet, som den första markerade raden visar. På den markerade raden som innehåller elementet <src> instansierar det Person objektet med egenskapsvärdet PersonNameJoe. Detta görs i avsnittet Resources och tilldelas en 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>

Den markerade raden som innehåller elementen <TextBlock> visar hur du binder till PersonName egenskapen. Därför TextBlock visas kontrollen med värdet "Joe".

I följande exempel anges objektens SourceBinding värden till static egenskapen 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>

Kommentarer

Som standard ärver bindningar den datakontext som anges av DataContext egenskapen, om en har angetts. Egenskapen är dock Source ett av sätten som du uttryckligen kan ange källan för en Binding och åsidosätta den ärvda datakontexten. Om du inte behöver funktionen för att upprätta ett omfång där flera egenskaper ärver samma datakontext kan du använda Source egenskapen i stället för egenskapen DataContext .

Med Binding.ElementName egenskaperna och Binding.RelativeSource kan du också ange källan för bindningen explicit. Men endast en av de tre egenskaperna, ElementName, Sourceoch RelativeSource, ska anges för varje bindning, eller så kan en konflikt uppstå. Den här egenskapen utlöser ett undantag om det finns en konflikt med bindningskällan.

Om du vill rensa den här egenskapen anger du den till DependencyProperty.UnsetValue.

XAML-attributanvändning

<object Source="object"/>

XAML-värden

Objekt Ett befintligt objekt. Om du vill referera till ett befintligt objekt använder du Tillägget StaticResource Markup

Gäller för