【问题标题】:How to Determine Which Pivot Item is Navigated To Most Often如何确定最常导航到的数据透视项
【发布时间】:2014-01-18 07:49:29
【问题描述】:

我正在使用一个在页面上包含 5 个枢轴项的枢轴控件。用户只能向右或向左滑动才能到达这些位置,但是从起始枢轴索引 = 0 开始,我希望能够确定用户通常会去哪个方向以及在该方向上走多远。由于我的每个枢轴都加载了几条数据,并且用户可以从起始索引向左或向右滑动,我的最终目标是确定用户在任一方向上移动的频率,以及多远,并加载这些枢轴项目第一的。例如,如果我的枢轴是

MainPage.xaml

<phone:Pivot x:Name="myPivot">
    <phone:PivotItem Header="one"/>
    <phone:PivotItem Header="two"/>
    <phone:PivotItem Header="three"/>
    <phone:PivotItem Header="four"/>
    <phone:PivotItem Header="five"/>
</phone:Pivot>

MainPage.xaml.cs

private async void MainPage_Loaded(object sender, RoutedEventArgs e)
    {
        await RenderAsync();
    }

private async Task RenderAsync()
    {
        if (!Busy)
        {
            Busy = true;

            int side = 136;

            try
            {
                using (Bitmap bitmap = await App.Model.RenderBitmapAsync(side))
                {
                    if (Settings.LoadDynamically.Value == false)
                    {
                        await RenderAsync(bitmap, side, App.Model.One, OneWrapPanel);
                        await RenderAsync(bitmap, side, App.Model.Two, TwoWrapPanel);
                        await RenderAsync(bitmap, side, App.Model.Three, ThreeWrapPanel);
                        await RenderAsync(bitmap, side, App.Model.Four, FourWrapPanel);
                        await RenderAsync(bitmap, side, App.Model.Fiv, FiveWrapPanel);
                    }
                    else
                    {
                        //Custom order goes here, load best order
                    }

                }
            }
            catch (Exception)
            {
                NavigationService.GoBack();
            }

            Busy = false;
        }
    }

其中第一个枢轴项目的索引为 0,第五个索引为 4,从第一个枢轴开始,我希望能够确定用户导航到枢轴 5(向左)和枢轴的次数两个(右)。从这里开始,我想再次知道用户朝那个方向前进了多少次。因此,如果用户先到 5,然后再到 4,再从 2 到 3。一旦收集到这些数据,我希望能够通过为每种情况设置某种权重来确定加载每个枢轴项目的最佳顺序。

【问题讨论】:

  • 你必须写逻辑没有分析这个
  • 我知道,我想我要问的是建议或方法。我相信我可以写出逻辑,但我不确定最好的方法来最好地实现目标。

标签: c# xaml windows-phone-7 windows-phone-8


【解决方案1】:

我认为没有其他办法。很简单:

private void appPivot_LoadedPivotItem(object sender, PivotItemEventArgs e)
{
  startUse = DateTime.Now;
}

private void appPivot_UnloadingPivotItem(object sender, PivotItemEventArgs e)
{
  TimeSpan pivotUsage = DateTime.Now - startUse;
  // Save it somewhere regarding to SelectedPivotItem
}

但地铁设计指南中不建议更改顺序(我记得),但我个人认为这是个好主意。

【讨论】:

  • 谢谢。我不一定要更改枢轴项目的顺序,只是根据我原始帖子中描述的最常见导航加载它们的顺序。我还添加了一些代码来向您展示我当前的实现。
  • 用户将如何飞越空载的枢轴?无论如何,它们都会被加载。
  • 好吧,他们不会。我只是想让用户觉得枢轴加载速度更快,方法是先加载他们更频繁地导航到的枢轴,然后再加载不太频繁导航的枢轴。就像负载枢轴一和二,然后是五个,然后是三个,然后是四个。也许这是一个坏主意,我应该按照您的建议跳过尚未加载的枢轴。如果我确实使用了跳过方法,那将如何工作?
  • 我认为更改项目顺序会更好,对于跳过的用户会更好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多