DataContext和ItemSource

一對多的關(guān)系
DataContext為上下文,綁定數(shù)據(jù)源
ItemSource取上下文中的某屬性,會一級一級往上找屬性

一般ItemSource的綁定,綁定到Grid/DataGrid一類容器上,底下的控件到這一級找

對比

1.DataContext 一般是一個非集合性質(zhì)的對象,而ItemSource 更期望數(shù)據(jù)源是集合對象
2.DataContext 是 FrameworkElement 類中定義的一個依賴屬性(Dependency property),ItemsSource是 在ItemsControl 類中定義的。所有繼承自FrameworkElement 的類(控件)都可以使用DataContext屬性并給其賦值,但我們只能給ItemsSource賦值為集合對象
3.DataContext不能產(chǎn)生模板,它只能用來篩選出數(shù)據(jù),供其它控件來綁定。而ItemsSource主要作用就是給模板提供數(shù)據(jù)
4.DataContext主要用來抓取一些子元素需要使用的數(shù)據(jù),以保證子元素能夠順利的使用數(shù)據(jù)。ItemsSource不會用來分享數(shù)據(jù),它只是對定義好的元素有效

舉例

后臺

public partial class DataContextAndItemSource : Window
{
    public DataContextAndItemSource()
    {
        InitializeComponent();
        ObservableCollection<Student> students = new ObservableCollection<Student>();
        students.Add(new Student()
        {
            Age = 15,
            Name = "吳芳",
            Sex = "女"
        });
        students.Add(new Student()
        {
            Age = 16,
            Name = "劉洋",
            Sex = "男"
        });
        //給DataContextAndItemSource的DataContext賦值
        DataContext = students;
    }
}

前端

<!--ItemsSource綁定后臺DataContext的數(shù)據(jù)-->
<DataGrid  AutoGenerateColumns="False" ItemsSource="{Binding}" CanUserAddRows="False" IsEnabled="False">
    <DataGrid.Columns>
        <DataGridTextColumn Width="*" Binding="{Binding Name}" Header="名稱" />
        <DataGridTextColumn Width="*" Binding="{Binding Age}" Header="年齡" />
    </DataGrid.Columns>
</DataGrid>

示例代碼

https://github.com/zLulus/NotePractice/tree/dev3/WPF/WpfDemo/DataContextAndItemSource

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 《裕語言》速成開發(fā)手冊3.0 官方用戶交流:iApp開發(fā)交流(1) 239547050iApp開發(fā)交流(2) 10...
    葉染柒丶閱讀 28,743評論 5 20
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,679評論 18 399
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,021評論 25 709
  • github 常用指令git clone 用于下載github倉庫中代碼到本地。例如倉庫:git://gi...
    xqiugen閱讀 332評論 0 1
  • 周五,我倆去了杭州。辦完事兒,順道閑走。 乘上公交車到杭州的九溪,一家餐館用了午餐后,沿著九溪行走。 天陰沉著臉,...
    用心生活用字記錄閱讀 487評論 8 8

友情鏈接更多精彩內(nèi)容