Msdn keypoint in silverlight part 1(DataContext)

What  Bill Said ?

 

依赖属性标识符字段: DataContextProperty

"数据上下文"是这样一个概念,它允许对象从它们在对象树中的父级来继承绑定指定信息。

数据上下文中最重要的一个层面就是用于绑定的数据源。DataContext 的最常见用途是直接将其设置为一个 CLR 数据源对象。如果 CLR 数据源是静态起始数据集,那么它可能是一个类。或者,您可以创建本地数据源作为新 ObservableCollection<T>,然后通过 WCF Data Services — WCF 数据服务 或其他技术更新该集合。有关 WCF Data Services — WCF 数据服务 方法的示例,请参见 WCF 数据服务 (Silverlight)

数据上下文还可能包含除数据源外的其他绑定特征,如进入数据源的路径。例如,您可以在 XAML 中建立以下对象树。

[xaml]

 

<StackPanel>
  <StackPanel.Resources>
    <SolidColorBrush Color="Orange" x:Key="MyBrush"/>
  </StackPanel.Resources>
  <StackPanel DataContext="{StaticResource MyBrush}">
    <Rectangle Height="50" Width="50" Fill="{Binding}" />
  </StackPanel>
</StackPanel>

在这种情况下,StackPanel 定义的 DataContext 传承到 Rectangle 子对象,成为 Fill 属性中的不同的未限定 {Binding} 语句的数据上下文。

DataContext 是为了便于对齐到共享数据上下文的绑定,这通常对避免详细绑定语句很有用。但是,这对未定义的 DataContext 是有效的,而且对存在于单独的绑定语句中的所有的必要绑定限定也有效。

在代码中,可以将数据上下文直接设置为 CLR 对象,并且将绑定计算为该对象的属性。

还可以将 DataContext 设置为在 ResourceDictionary 中实例化为 XAML 对象元素的自定义对象,通过使用 StaticResource 按资源的 x:Key 值来检索该资源对自定义对象进行引用。

DataContext 是一个可绑定的属性,以实现一个上下文可以绑定到其他上下文的方案,尽管该方案不常见。

示例

 

下面的示例演示 ListBox(名为 MyBooks)的 UI 上下文及其各个项。然后,加载时执行的代码隐藏设置 MyBooks ListBox 上的 DataContextListBox 项中的 {Binding ISBN}  {Binding Title} 路径表达式继承 DataContext 并可以将其用于绑定 Source,然后使用 ListBox 项填充行为来绑定到该集合源中的数据项。

<StackPanel>

    <ListBox x:Name="MyBooks" Margin="5" ItemsSource="{Binding Mode=OneWay}" >
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal" >
                    <TextBlock Text="{Binding ISBN}" Margin="0,0,50,0" />
            <TextBlock Text="{Binding Title}" />
            </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>


       //You can add items to your collection
       AllBooks.Add(new Book("4458907683", "Training Your Dog",
           new DateTime(2000, 2, 8), 44.25));
       AllBooks.Add(new Book("0446675385", "Good Owners, Great Dogs",
           new DateTime(1999, 9, 1), 15.99));
       //Set the data context for the list of books
       MyBooks.DataContext = AllBooks;



 

这只是一个简短的示例。若要查看具有绑定源等方面的支持代码的此相同示例代码,请参见如何绑定到分层数据并创建主/从视图。若要了解有关数据绑定方案中DataContext 角色的更多信息,请参见数据绑定

 

 

What Actually Works ?

你可能感兴趣的:(silverlight)