与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中的一条记录,但它没有改变任何内容。
我没有附加任何代码,而我认为这不是与代码相关的问题。
亲切的问候,
亚当
答案 0 :(得分:0)
好吧我想我已经能够理解这个问题了。您的问题的意思是:GridView
中的项目会在Pivot.SelectedItem
更改后更改,只要您希望在绑定数据更改后更改它。此外,您不希望一次删除一个项目,您希望它们没有任何转换。如果这就是您的意思,请参阅以下解决方案。
Pivot
控件的内容是内置DefferedLoadingStrategy
。因此,每次更改选定的选项卡时,未选中的选项卡的LoadingStrategy
都会转到Lazy
,因此,在这些特定数据项发生的所有更改都不会发生,直到再次选中该选项卡。基本上,视图在选择之前不会要求更新数据。
在UWP中,GridView
默认Transitions
。因此,当数据更改时,内容将使用控件定义的Transitions进行更新。
对于一次删除GridView
个项目,您可以输入类似的内容以避免任何转换。
<GridView.ItemContainerTransitions>
<TransitionCollection/>
</GridView.ItemContainerTransitions>
如果你有团体风格,This Link会为你提供更多关于实施这段代码的见解。
对于Pivot
问题,我建议您不要使用LayoutUpdated()
事件,因为每次视图调整大小时都会调用它,或者即使最轻微的UI更改也会发生任何变化。相反,我建议您使用SelectionChanged
控件上的Pivot
事件并命名您的PivotItems
,以便检查Pivot.SelectedItem
属性,以便在{{1}上应用不同的代码逻辑事件。您可以使用以下逻辑使用SelectionChanged
事件:
SelectionChanged
如果不随意发表评论,我希望这可以解决您的问题。感谢