1. 程式人生 > >WPF學習筆記——DataContext 與 ItemSource

WPF學習筆記——DataContext 與 ItemSource

作為一個WPF新手,在ListBox控制元件裡,我分不清 DataContext 與 ItemSource的區別。

在實踐中,似乎:

  1. <ListBoxx:Name="Lst"DataContext="{Binding model.UserList}"ItemsSource="{Binding}">
  1. <ListBoxx:Name="Lst"ItemsSource="{Binding model.UserList}">

似乎是等價的。

我先記錄下來,看看以後是否會明白。

=======================================================================

對於一個使用者控制元件,如果在外部賦了DataContext,那麼會覆蓋了控制元件本身的DataContext,如

  1. <uv:UserListUVDataContext="{Binding UserListDataContext}"/>

會導致UserListUV控制元件內部的

this.DataContext = ... 無效。在這種情況下,要對控制元件內部的Grid或其他容器重新賦值。

this.grid.DataContext = ...

========================================================================

看來WPF這個資料來源繫結真是個問題,因為沒有起作用,所以今晚又除錯了一晚。總結出兩個要注意的地方:

1、在控制元件中賦資料上下文,形式為DataContext={Binding ***} 而不是 DataContext=***

2、要注意此控制元件的容器是否也有DataContext,是否有衝突或不相容