我正在尝试禁用数据透视控件上的滑动。环顾这里和谷歌,似乎使用 IsLocked 属性是可行的方法。我得到的问题是,如果我在xaml中将属性设置为True,那么所有其他 PivotItem 标头都会消失。
现在我认为我仍然可以使用此功能,但如果我将 IsLocked 设置为false,请更改 PivotControl 。 SelectedIndex 表示1,等待 LoadedPivotItem 事件触发,然后再将 IsLocked 设置为true,标题会再次消失。
这是代码。
注意:PagePivot是一个PivotControl
private void appbarNext_Click(object sender, System.EventArgs e)
{
// Unlock the PivotControl
PagePivot.IsLocked = false;
// If we are at the first item then move to the next - (just testing everything out)
if(PagePivot.SelectedIndex == 0)
{
PagePivot.SelectedIndex = 1;
}
}
private void PagePivot_LoadedPivotItem(object sender, PivotItemEventArgs e)
{
// Relock the PivotControl - this causes the headers to disappear again
PagePivot.IsLocked = true;
}
正如我所说的,上面的一切都有效,但是一旦我设置IsLocked = true
,标题就会消失。
我确实考虑过将IsHitTestVisable
设置为false
,但枢轴项中的控件都不起作用。
截图:
1。在第一次加载时, PivotControl 被锁定,第一项标题显示。
2。更改了所选项目, PivotControl 项目加载后被锁定。
答案 0 :(得分:6)
对于UWP,我要覆盖枢轴样式,并且有一个元素数据透视面板,所以如果我们禁用ManipulationMode =无滑动将被禁用,它将更像标签。
<PivotPanel x:Name="Panel" VerticalAlignment="Stretch" ManipulationMode="None">
答案 1 :(得分:1)
只是没有足够的时间来更新标头。 这个例子可能有帮助
Home_Pivot.IsLocked = false;
await Task.Delay(TimeSpan.FromMilliseconds(200));//Of course you can reduce the time
SelectedPivotItem = i;//or Home_Pivot.SelectedIndex || Home_Pivot.SelectedItem
Home_Pivot.IsLocked = true;
答案 2 :(得分:0)
这是设计你应该考虑保持这样。如果不允许用户滑动到另一个枢轴而不是显示它的点。他们只会看到另一个枢轴项目,但滑动不起作用。
答案 3 :(得分:0)
如果绑定到Header属性,则有一个简单的解决方法。
看起来锁定Pivot导致其他项的标头在内部设置为空字符串。
要恢复标头,只需触发更改通知或重置其值。
/// simply reset the header; the header is bound to ViewModel.DisplayName
private void ResetHeader(ViewModel itemToReset)
{
// either
NotifyOfPropertyChange("DisplayName");
// if the above isn't accessible, you can reset the header value
var name = itemToReset.DisplayName;
itemToReset.DisplayName = "";
itemToReset.DisplayName = name;
}
因此,在您让用户输入数据或完成显示信息后,请恢复导航并重置标题:
// restore previous state
Pivot.IsLocked = false;
ResetHeader(Items[0]);