【问题标题】:Block user navigation in a Pivot item for UWP apps在 UWP 应用的数据透视项中阻止用户导航
【发布时间】:2018-05-24 09:53:05
【问题描述】:

如何阻止用户单击 UWP XAML 应用中的数据透视项目,但仍显示每个数据透视项目的标题?例如,我有三个枢轴项目,分别标记为“Step 1”、“Step 2”和“Step 3”。我希望这些项目中的每一个都显示在数据透视表的顶部,但不是用户可参与的。它们只是用来提醒用户在进程中的当前位置。

我在数据透视表的定义中尝试过IsLocked="true",但它只显示了我当前所在的数据透视项目的标题。

【问题讨论】:

    标签: c# visual-studio uwp uwp-xaml


    【解决方案1】:

    我试过 IsEnabled="false" 但没有奏效。然后我尝试将数据绑定到一个属性并使用 setter 来限制它的值,这确实奏效了。

    查看:

    <Pivot SelectedIndex="{x:Bind PageViewModel.MyPivotIndex, Mode=TwoWay}">
        <PivotItem Header="Item1">
            <TextBlock Text="Stuff1"/>
        </PivotItem>
        <PivotItem Header="Item2" IsEnabled="False">
            <TextBlock Text="Stuff2"/>
        </PivotItem>
    </Pivot>
    

    视图模型:

    private int _myPivotIndex;
    public int MyPivotIndex
    {
        get
        {
            return _myPivotIndex;
        }
        set
        {
            if (ConditionMet)
            {
                _myPivotIndex = value;
            }
            else
            {
                _myPivotIndex = 0;
                OnPropertyChanged("MyPivotIndex");
            }
        }
    }
    

    如果您在代码隐藏中使用“SelectionChanged”事件来检查条件,然后如果需要通过设置 SelectedItem 或 SelectedIndex 将其设置回 Item1,则应该工作的非 MVVM 选项。

    如果您希望“禁用”项在鼠标悬停时不突出显示,则必须复制样式 (https://msdn.microsoft.com/en-us/library/windows/apps/mt299144.aspx) 并在“PointerOver”视觉状态中对其进行修改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-20
      • 1970-01-01
      • 2018-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多