WPF學習筆記——DataContext 與 ItemSource
阿新 • • 發佈:2019-02-08
作為一個WPF新手,在ListBox控制元件裡,我分不清 DataContext 與 ItemSource的區別。
在實踐中,似乎:
- <ListBoxx:Name="Lst"DataContext="{Binding model.UserList}"ItemsSource="{Binding}">
- <ListBoxx:Name="Lst"ItemsSource="{Binding model.UserList}">
似乎是等價的。
我先記錄下來,看看以後是否會明白。
=======================================================================
對於一個使用者控制元件,如果在外部賦了DataContext,那麼會覆蓋了控制元件本身的DataContext,如
- <uv:UserListUVDataContext="{Binding UserListDataContext}"/>
會導致UserListUV控制元件內部的
this.DataContext = ... 無效。在這種情況下,要對控制元件內部的Grid或其他容器重新賦值。
this.grid.DataContext = ...
========================================================================
看來WPF這個資料來源繫結真是個問題,因為沒有起作用,所以今晚又除錯了一晚。總結出兩個要注意的地方:
1、在控制元件中賦資料上下文,形式為DataContext={Binding ***} 而不是 DataContext=***
2、要注意此控制元件的容器是否也有DataContext,是否有衝突或不相容