【问题标题】: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”视觉状态中对其进行修改。