【问题标题】:Lazy load data bound list inside TabControl WPFTabControl WPF中的延迟加载数据绑定列表
【发布时间】:2011-01-24 13:53:23
【问题描述】:

我有一个带有三个选项卡的 TabControl,每个选项卡都包含一个绑定到数据列表的 DataGrid。 视图后面的模型设置了延迟加载的属性。

<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 延迟加载绑定?

谢谢!

【问题讨论】:

    标签: c# wpf data-binding


    【解决方案1】:

    我也遇到了这个问题,最后我向绑定到 TabItems 的IsSelected 属性的数据源添加了一个“已加载”属性,这样就延迟加载了数据。考虑一下,也许使用 Datatemplates 也可以。

    【讨论】:

    • 感谢您的快速回复!这确实可以解决问题,但不知何故我觉得应该有一种方法可以正确地做到这一点......
    • 是的,这确实不是一个干净的解决方案。另一个想法是在选项卡选择更改时从代码隐藏应用绑定。至少这不需要修改模型,并且管道代码将保留在 UI 中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-08
    相关资源
    最近更新 更多