2011-01-24 84 views
2

我有一個帶有三個選項卡的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

我也有這個問題,並最終添加一個「Loaded」屬性到我綁定到TabItems的IsSelected屬性的數據源,並以這種方式延遲加載數據。考慮一下,也許使用Datatemplates也可以。

+0

感謝您的快速回復! 這確實可以解決問題,但不知何故,我覺得應該有一種方法來正確地做到這一點... –

+0

是的,這真的不是一個乾淨的解決方案。另一個想法是在選項卡選擇更改時應用代碼隱藏的綁定。至少不需要修改模型,管道代碼將保留在UI中。 – Botz3000