
> DataContext属性
>“控件使用此属性作为数据源”
>“是每个框架元素具有的属性,可用于将数据流入屏幕”
>“DataContext具有范围”
>“根据DataContext在对象树中的分配位置建立范围”
>“如果在父元素(例如窗口)上设置DataContext,该属性将向下流向所有子元素(例如文本框)”
>内容属性
>此属性具有许多名称,具体取决于正在使用的控件:
> ContentControl.Content
> ItemsControl.ItemsSource
> Items.ItemsSource
> HeaderedContentControl.Header
> HeaderedContentControl.Content
所以我的问题是:Content和DataContext属性之间有什么区别?这里有一个我很遗憾的细微差别.是吗…
>当DataContext将数据流入UI时,
> Content属性的工作是确定(通常是一个绑定)将显示的内容(通过ContentPresenter ContentTemplate)
示例代码
<Window x:Name="myWindow" DataContext="{Binding ClassA}> <StackPanel> <!-- DataContext is set to ClassA --> <!-- DataContext is set to ClassA, ClassA.Name will be displayed --> <Label Content="{Binding Name}" /> </StackPanel> </Window>参考
> MSDN:ContentControl.Content Property
> MSDN:FrameworkElement.DataContext Property
> MSDN:WPF Content Model
>值得一读
> StackOverflow:What is DataContext for?
>它参与所有框架元素的绑定,作为默认绑定源.
>正如您所提到的,元素的DataContext传递给子元素.
内容更加具体:
>它是一个特定于一组非常有限的控件的依赖属性(大多数是从ContentControl继承的控件 – 其他控件如ListBox本身不拥有Content属性,但在其控件模板中的某处使用ContentControl).
>它不像DataContext那样传递,而是仅关注拥有Control及其直接关系(即绑定)
>它由要求显示某些内容的控件使用,控件本身不知道或关心将是什么类型的对象.
>它通常与ContentTemplate结合使用 – 也就是说,Content是要显示的内容,ContentTemplate是如何显示它. (按钮就是一个很好的例子.)
转载注明原文:c# – WPF:Content和DataContext属性有什么区别? - 乐贴网