簡體   English   中英

WPF:Content和DataContext屬性之間有什么區別?

[英]WPF: What is the difference between the Content and DataContext properties?

據我了解......

  • DataContext屬性
    • “控件使用此屬性作為數據源”
    • “是每個框架元素具有的屬性,可用於將數據流入屏幕”
    • “DataContext具有范圍”
    • “范圍是根據DataContext在對象樹中的分配位置建立的”
    • “如果在父元素(例如Window)上設置DataContext,該屬性將向下流向所有子元素(例如文本框)”
  • 內容屬性
    • 此屬性具有許多名稱,具體取決於正在使用的控件:
      • ContentControl.Content
      • ItemsControl.ItemsSource
      • Items.ItemsSource
      • HeaderedContentControl.Header
      • HeaderedContentControl.Content

所以我的問題是: ContentDataContext屬性之間有什么區別 這里有一個我很遺憾的細微差別。 是嗎...

  1. DataContext數據流入UI,
  2. 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>

參考

DataContext是WPF中的一個更通用的功能,由低級FrameworkElement類的所有權所暗示。

  • 它參與所有框架元素的綁定,作為默認綁定源。
  • 正如您所提到的,元素的DataContext向下傳遞給子元素。

Content更加具體:

  • 它是一個特定於一組非常有限的控件的依賴屬性(大多數是從ContentControl繼承的控件 - 其他控件如ListBox本身不擁有Content屬性,但在其控件模板中的某處使用 ContentControl)。
  • 它不像DataContext那樣傳遞,而是僅僅關注擁有Control及其直接關系(即綁定)
  • 它由用於調用某些內容的控件使用,控件本身不知道或關心將是什么類型的對象。
  • 它經常被用來在cojunction用ContentTemplate -也就是說,內容是要顯示什么 ,是的ContentTemplate 如何顯示它。 Button就是一個很好的例子。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM