2011-01-24 48 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