信息
您所需的主题如下所示。但此主题未包含在此库中。

FrameworkElement.DataContext 属性

2013/12/13

获取或设置 FrameworkElement 参与数据绑定时的数据上下文。

Namespace:  System.Windows
程序集:  System.Windows(位于 System.Windows.dll 中)
XMLNS for XAML: 未映射到 xmlns。

public Object DataContext { get; set; }
<frameworkElement DataContext="binding"/>
- or -
<frameworkElement DataContext="{StaticResource keyedObject}"/>

XAML 值

绑定

可以引用现有数据上下文或数据上下文中的属性的绑定表达式。 请参见Windows Phone 的数据绑定

keyedObject

在范围内 Resources 集合中存在的对象的 x:Key 值。 通常,这是在代码中的其他位置定义的自定义类型的对象元素实例化,并且需要 ResourceDictionary 内的自定义 XAML 命名空间映射。

属性值

类型: System.Object
要用作数据上下文的对象。

依赖项属性标识符字段: DataContextProperty

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

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

数据上下文还可能包含除数据源外的其他绑定特征,如进入数据源的路径。 例如,您可以在 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}" 
             FontSize="{StaticResource PhoneFontSizeMedium}">
        <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 角色的更多信息,请参见Windows Phone 的数据绑定

Windows Phone OS

受以下版本支持: 8.0, 7.1, 7.0

Windows Phone

显示: