+-
c# – WPF:Content和DataContext属性有什么区别?
据我了解……

> 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是WPF中的一个更通用的功能,由低级FrameworkElement类的所有权所暗示.

>它参与所有框架元素的绑定,作为默认绑定源.
>正如您所提到的,元素的DataContext传递给子元素.

内容更加具体:

>它是一个特定于一组非常有限的控件的依赖属性(大多数是从ContentControl继承的控件 – 其他控件如ListBox本身不拥有Content属性,但在其控件模板中的某处使用ContentControl).
>它不像DataContext那样传递,而是仅关注拥有Control及其直接关系(即绑定)
>它由要求显示某些内容的控件使用,控件本身不知道或关心将是什么类型的对象.
>它通常与ContentTemplate结合使用 – 也就是说,Content是要显示的内容,ContentTemplate是如何显示它. (按钮就是一个很好的例子.)

点击查看更多相关文章

转载注明原文:c# – WPF:Content和DataContext属性有什么区别? - 乐贴网