1

以前は、ピボット Item を削除するためにそれを行っていました: nameOfThePivot.Items.remove(nameOfthePivotItem)。

しかし、その後、ピボットアイテムを次のように変更しました:

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

そして今、このアイテムを削除することは不可能です: エラーが発生しました: ArgumentException is unhandled

どうやら既知のバグのようですが、修正方法がわかりません。pivotItem を非表示にする別のアイデアはありますか。

ありがとうございました

4

2 に答える 2

0

これを行うには 2 つの方法があります。項目をバインドされたコレクションとして保持し、基になるコレクションを更新するか、コードで項目を生成してから追加および削除します。

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));
        }
    }

編集:

(ピボットの HeaderTemplate ではなく) 各ヘッダーをカスタマイズしたため、文字列にキャストする代わりに、TextBlock にキャストして Text プロパティを取得する必要があります。使用法はアプリに固有のものであるため、同様の問題を抱えている他の人にとってより役立つため、例をそのままにしておきます。

于 2012-05-04T16:59:13.557 に答える