使用IsLocked属性禁用在数据透视表控件上滑动隐藏了数据透视表标题

时间:2013-12-29 20:21:04

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

我正在尝试禁用数据透视控件上的滑动。环顾这里和谷歌,似乎使用 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 项目加载后被锁定。

4 个答案:

答案 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]);