WP7当内部有控件时,如何删除数据透视表项

时间:2012-05-04 10:48:20

标签: windows-phone-7 pivotitem

我曾经这样做来删除一个数据透镜项:nameOfThePivot.Items.remove(nameOfthePivotItem)。

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

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

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

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

谢谢

2 个答案:

答案 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属性,而不是转换为字符串。由于您的使用对您的应用更具针对性,我将保留原样,因为它对于有类似问题的其他人更有用。