我曾经这样做来删除一个数据透镜项:nameOfThePivot.Items.remove(nameOfthePivotItem)。
但后来我将我的枢轴项目改为:
<controls:PivotItem x:Name="DistributionPivot" >
<controls:PivotItem.Header>
<TextBlock Text="distribution" />
</controls:PivotItem.Header>
现在无法删除此项:我收到错误:ArgumentException未处理
这显然是一个已知的错误,但我找不到如何解决它。你有另一个想法隐藏pivotItem。
谢谢
答案 0 :(得分:0)
有两种方法可以执行此操作:将项目作为绑定集合并更新基础集合或在代码中生成项目,然后添加和删除它们。
无法删除在XAML中创建的项目。
答案 1 :(得分:0)
我使用在XAML中创建的PivotItems来完成此操作。我创建了这些扩展方法作为帮助。
public static class PivotFeatureSwitchHelper
{
public static bool RemovePivotItemIfExistsByHeaderName(this Pivot p, string headerKey)
{
var item = FindPivotItemWithHeaderName(p, headerKey);
return item != null && p.Items.Remove(item);
}
public static PivotItem FindPivotItemWithHeaderName(this Pivot p, string name)
{
return (PivotItem)p.Items.FirstOrDefault(mem => name.Equals( (string)(((PivotItem)mem).Header), StringComparison.OrdinalIgnoreCase));
}
}
编辑:
由于您已经自定义了每个标头(而不是Pivot的HeaderTemplate),因此您应该转换为TextBlock并获取Text属性,而不是转换为字符串。由于您的使用对您的应用更具针对性,我将保留原样,因为它对于有类似问题的其他人更有用。