WPF:内容和DataContext的特性之间的区别是什么? [英] WPF: What is the difference between the Content and DataContext properties?
本文介绍了WPF:内容和DataContext的特性之间的区别是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
据我了解...
- 的DataContext 属性
- 在控件使用此属性作为数据源
- 是每个框架元件具有可用于流数据转换成屏幕的属性
- 在DataContext的有范围
- 的范围是根据其中的DataContext分配给对象树中建立了
- 如果你父元素上设置DataContext的(例如,一个窗口),该属性会向下流到所有子元素(如文本框)
- DataContext property
- "controls use this property as a data source"
- "is a property that each framework element has that can be used to flow data into the screen"
- "DataContext has scope"
- "the scope is established according to where the DataContext is assigned to in the object tree"
- "if you set the DataContext on a parent element (e.g. a Window), that property will flow down to all child elements (e.g. a text box)"
- 在该酒店发生在具体取决于所使用的控制许多名字:
- ContentControl.Content
- ItemsControl.ItemsSource
- Items.ItemsSource
- HeaderedContentControl.Header
- HeaderedContentControl.Content
- This property takes on many names depending on the control that is being used:
- ContentControl.Content
- ItemsControl.ItemsSource
- Items.ItemsSource
- HeaderedContentControl.Header
- HeaderedContentControl.Content
所以我的问题是:什么是
内容之间的差异
和的DataContext
属性?这里有一个细微之处,我很想念。难道......So my question is: what is the difference between the
Content
andDataContext
properties? There is a nuance here that I am missing. Is it...- 当
的DataContext
流动数据到用户界面, - 这是
内容
属性来确定的工作(通常是扔了一个绑定)究竟会显示(通过内容presenter +的ContentTemplate)
- While the
DataContext
flows data into the UI, - It is the job of the
Content
property to determine (usually threw a binding) what will be displayed (via ContentPresenter + ContentTemplate)
样品code
<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:<一href="http://msdn.microsoft.com/en-us/library/system.windows.controls.contentcontrol.content%28v=vs.110%29.aspx"相对=nofollow> ContentControl.Content物业
- MSDN:<一href="http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.datacontext%28v=vs.110%29.aspx"相对=nofollow> FrameworkElement.DataContext物业
- 在MSDN: WPF内容模型
- 值得一读
- MSDN: ContentControl.Content Property
- MSDN: FrameworkElement.DataContext Property
- MSDN: WPF Content Model
- worth reading
推荐答案
的DataContext
是在WPF更一般的特征,所建议的所有权由低层次的FrameworkElement的类。DataContext
is a more general feature in WPF, as suggested by its ownership by the low-level FrameworkElement class.- 在它参与绑定的所有的框架元素,作为默认绑定源。
- 正如你所说,一个元素的DataContext的被传递到子元素。
- it participates in bindings for all framework elements, as the default binding source.
- as you mentioned, an element's DataContext is passed down to child elements.
内容
是更具体的:- 这是针对一组控制(主要是那些从
ContentControl中
继承的控制非常有限的依赖属性 - 其他控件,如的ListBox
没有自己的内容属性本身,而是使用的在他们的控制模板某处ContentControl中)。 - 在它没有传下来像DataContext的,相反却是只关心用所拥有的控制和它的直接的关系(即绑定)
- 在使用它调用的东西,控制要显示,在控制自身不知道或不关心什么类型的对象,这将是。
- 在它经常被用来在cojunction与
的ContentTemplate
- 也就是说,内容是的什么的显示,并且的ContentTemplate是的如何,以显示它。 (按钮
就是一个很好的例子。)
- it is a dependency property specific to a very limited set of controls (mostly those controls that inherit from
ContentControl
-- other controls such asListBox
do not own a Content property themselves, but use a ContentControl somewhere in their control templates). - it is not passed down like the DataContext, but is rather concerned solely with the owning Control and its immediate relationships (ie, bindings)
- it is used by controls that call for something to be displayed, where the control itself does not know or care what type of object that will be.
- it is often used in cojunction with
ContentTemplate
-- that is, Content is what to display, and ContentTemplate is how to display it. (Button
is a good example of this.)
这篇关于WPF:内容和DataContext的特性之间的区别是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文