C# 如何有效地使用Pivot?

C# 如何有效地使用Pivot?,c#,windows-phone-7,pivot,C#,Windows Phone 7,Pivot,我的WP7应用程序中有以下数据结构。我通过数据绑定生成了三个数据透视项,即绑定的内容。有趣的是,当数据透视项发生绑定时,内容(项)会被查询三次并再次更改选择 我做错什么了吗 代码: 我有三个文件夹项,当创建Pivot控件时ThingsListViewModel.items属性执行三次,每次选择更改一次 我希望ThingsListViewModel.Items仅在Pivot控件上执行选择更改。我认为您需要侦听加载的Pivot项目和Pivot的加载事件。加载的事件将始终加载第一个数据透视项(Lo

我的WP7应用程序中有以下数据结构。我通过数据绑定生成了三个
数据透视项
,即绑定的内容。有趣的是,当数据透视项发生绑定时,内容(项)会被查询三次并再次更改选择

我做错什么了吗

代码:


我有三个文件夹项,当创建Pivot控件时
ThingsListViewModel.items
属性执行三次,每次选择更改一次


我希望
ThingsListViewModel.Items
仅在Pivot控件上执行选择更改。

我认为您需要侦听加载的Pivot项目和Pivot的加载事件。加载的事件将始终加载第一个数据透视项(LoadedPivotItem),但不会调用该数据透视项。当用户滑动到另一个数据透视项时,将调用LoadedPivotItem


根据这些事件,您应该对当前选择的页面运行查询。您可能还希望在加载每个数据透视的数据后显示一个标志,以避免再次运行查询。

您必须在此处提供更多详细信息。也许可以发布一些XAML片段和绑定到它的代码。“数据透视项内容被查询三次”是什么意思?@ColinE:我想他的意思是,数据透视项绑定到的每个数据结构在每次选择更改时被访问三次,而不是每次加载数据透视项时被访问一次。我从未计算过这种情况发生的次数,但我知道它不止一次,因为Pivot会加载与当前所选项目相邻的两个PivotItems。@Praetorian--你说得完全正确。如果只有3个支点,加载任何一个支点都会加载其他两个支点;导致任何更改触发3个查询。
<controls:Pivot Title="{StaticResource ApplicationName}" ItemsSource="{Binding Folders}" SelectedItem="{Binding SelectedFolder, Mode=TwoWay}" Name="_pivot">
    <controls:Pivot.ItemTemplate>
        <DataTemplate>
            <ListBox DataContext="{Binding Source={StaticResource Locator}}" ItemsSource="{Binding ThingsListViewModel.Items}"  />
        </DataTemplate>
    </controls:Pivot.ItemTemplate>