2011-01-24 15 views
2

私は3つのタブを持つTabControlを持っています。各タブには、データリストにバインドされたDataGridが含まれています。 ビューの背後にあるモデルは、遅延読み込みプロパティで設定されています。TabControl WPF内の遅延ロードデータバインドリスト

<TabControl> 
    <TabItem> 
     <DataGrid ItemsSource="{Binding FirstList}" > 
      <DataGrid.Columns> 
       <DataGridTextColumn Header="Column1" Binding="{Binding Property1}" /> 
       <DataGridTextColumn Header="Column2" Binding="{Binding Property2}" /> 
      </DataGrid.Columns> 
     </DataGrid> 
    </TabItem> 
    <TabItem> 
     <DataGrid ItemsSource="{Binding SecondList}" > 
      <DataGrid.Columns> 
       <DataGridTextColumn Header="Column1" Binding="{Binding Property1}" /> 
       <DataGridTextColumn Header="Column2" Binding="{Binding Property2}" /> 
      </DataGrid.Columns> 
     </DataGrid> 
    </TabItem> 
    <TabItem> 
     <DataGrid ItemsSource="{Binding ThirdList}" > 
      <DataGrid.Columns> 
       <DataGridTextColumn Header="Column1" Binding="{Binding Property1}" /> 
       <DataGridTextColumn Header="Column2" Binding="{Binding Property2}" /> 
      </DataGrid.Columns> 
     </DataGrid> 
    </TabItem> 
</TabControl> 

それぞれのリストは、該当するタブをクリックしたときにのみロードするようにしました。しかし、私はすべてのリストを最初にロードすることになります。

各TabItemの読み込みバインドを遅延させる方法はありますか?

ありがとうございます!

答えて

0

この問題もあり、TabItemsのIsSelectedプロパティにバインドされたデータソースに「読み込み済み」プロパティを追加してデータを遅延ロードしました。それについて考えると、多分Datatemplatesを使ってもうまくいきました。

+0

お返事ありがとうございます! これは本当に問題を解決しますが、どういうわけか、これを正しく行う方法があるはずです... –

+0

はい、それは本当にクリーンな解決策ではありません。別の考え方は、タブ選択が変更されたときにコードビハインドからバインディングを適用することです。少なくとも、モデルを変更する必要はなく、配管コードはUIにとどまります。 – Botz3000

関連する問題