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 上的 DataContext。ListBox 项中的 {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 ?
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。
浙公网安备 33010602011771号