1

我曾经这样做是为了删除一个枢轴项:nameOfThePivot.Items.remove(nameOfthePivotItem)。

但后来我将我的枢轴项目更改为:

    <controls:PivotItem x:Name="DistributionPivot"  >
        <controls:PivotItem.Header>
            <TextBlock Text="distribution" />
        </controls:PivotItem.Header>

现在无法删除此项目:我收到错误消息:ArgumentException 未处理

这显然是一个已知的错误,但我找不到如何修复它。你有另一个想法来隐藏一个pivotItem。

谢谢

4

2 回答 2

0

有两种方法可以做到这一点:要么将您的项目作为绑定集合并更新基础集合,要么在代码中生成项目,然后添加和删除它们。

无法删除在 XAML 中创建的项目。

于 2012-05-04T12:47:58.167 回答
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 属性,而不是转换为字符串。由于您的使用更具体到您的应用程序,因此我将保留该示例,因为它对于遇到类似问题的其他人会更有用。

于 2012-05-04T16:59:13.557 回答