[WP8.1] Windows Phone [8.1] - PivotItem布局仅在选择PivotItem

时间:2017-01-07 16:33:48

标签: c# windows-phone-8.1 pivot

与UI有关的问题(坐在后端的时间太棒了。)

一些介绍:

在我的项目中,我的MainPage with Pivot Control包含3个PivotItems。还有一个额外的页面,我们称之为AddPage。

有两个DataSource之间存在关系。

PivotItem number 2能够从DataSource_01中删除项目。当发生这种情况时,DataSource_02重新计算其内容并返回PivotItem编号1的新更新集合。这不会向DataSource_02添加新项目,它只是更改了一些属性(当前DataSource_01有18个类别中的160个项目,Data source_02保留此项基于DataSource_01的18个类别和相应的类别总和。

PivotItem编号1保存GridView,项目源绑定到DataSource_02。点击一个项会触发AddPage,它可以将项添加到DataSource_01。

这是简化的逻辑并且有效。

问题是LayoutUpdate。当我滑动到PivotItem_01时,从PivotItem_02上的DataSource_01中删除项目后,我可以看到每个GridViewItem一次弹出一个。我还没有说服自己接受这种行为,所以我在这里。

我宁愿预先加载PivotItem_01的视图,同时仍然在PivotItem_02上。也许在更新PivotItem_02之前?有没有办法控制这种行为?

我试图在数据库更新后运行我的Pivot的UpdateLayout(),但它不起作用。

还有一个转折。

我正在为Windows 8.1系统编写我的应用程序,同时在我的Microsoft Lumia 640LTE设备上使用Windows 10进行测试。我还有另一个测试设备,带有Windows 8.1的Nokia Lumia 530 DS,这个工作正常,布局得到更新在滑动到它之前在PivotItem_01上。

我已经添加了一个PivotItem_01控件_SizeChanged事件和处理程序。在更新PivotItem_02时,在Windows 8.1设备上滑动时,处理程序在Windows_10设备上运行。这令人困惑,但可以解决。我还尝试过仅使用类别的新数据源和DataSource_01中的一条记录,但它没有改变任何内容。

我没有附加任何代码,而我认为这不是与代码相关的问题。

亲切的问候,

亚当

1 个答案:

答案 0 :(得分:0)

了解问题

好吧我想我已经能够理解这个问题了。您的问题的意思是:GridView中的项目会在Pivot.SelectedItem更改后更改,只要您希望在绑定数据更改后更改它。此外,您不希望一次删除一个项目,您希望它们没有任何转换。如果这就是您的意思,请参阅以下解决方案。

Pivot

实际发生了什么

Pivot控件的内容是内置DefferedLoadingStrategy。因此,每次更改选定的选项卡时,未选中的选项卡的LoadingStrategy都会转到Lazy,因此,在这些特定数据项发生的所有更改都不会发生,直到再次选中该选项卡。基本上,视图在选择之前不会要求更新数据。

GridViewItems

发生了什么

在UWP中,GridView默认Transitions。因此,当数据更改时,内容将使用控件定义的Transitions进行更新。

解决方案:

对于一次删除GridView个项目,您可以输入类似的内容以避免任何转换。

<GridView.ItemContainerTransitions>
     <TransitionCollection/>
</GridView.ItemContainerTransitions>
如果你有团体风格,

This Link会为你提供更多关于实施这段代码的见解。

对于Pivot问题,我建议您不要使用LayoutUpdated()事件,因为每次视图调整大小时都会调用它,或者即使最轻微的UI更改也会发生任何变化。相反,我建议您使用SelectionChanged控件上的Pivot事件并命名您的PivotItems,以便检查Pivot.SelectedItem属性,以便在{{1}上应用不同的代码逻辑事件。您可以使用以下逻辑使用SelectionChanged事件:

SelectionChanged

如果不随意发表评论,我希望这可以解决您的问题。感谢