1

ピボット コントロールのアイテムとして保持したい約 30 の画像があります。SO私はピボットを動的に追加していました.今、いくつかの制限を超えた場合、ピボット項目を削除したいのですが、ピボット選択を変更するとInvalidExceptionが発生します. スニペットの pivotshow はピボット コントロールです。

    void PivotShow_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        AddItems();
    }

    private void AddItems()
    {
        PivotItem toadd = PivotGen(images[i]);
        i = (i + 1) % (images.Length);
        PivotShow.Items.Add(toadd);
        try
        {
            if (PivotShow.Items.Count > 3)
                PivotShow.Items.RemoveAt(0);
        }
        catch (InvalidOperationException)
        {
            MessageBox.Show("Operation not allowed");
        }
    }

    private PivotItem PivotGen(string urlimage)
    {
        PivotItem p = new PivotItem();
        p.Margin = new Thickness(0, -90, 0, 0);

        Image img = new Image();
        BitmapImage bmp = new BitmapImage(new Uri(urlimage, UriKind.Relative));
        img.Stretch = Stretch.Fill;
        img.Source = bmp;
        p.Content = img;

        return p;
        //PivotShow.Items.Add(p);
    }

前もって感謝します

4

1 に答える 1

1

これは、現在変更中のコレクションを変更しようとしているために発生する可能性が最も高いです。次のようにコードを延期できます。

        EventHandler handler = null;
        handler = (s, e) =>
        {
            element.LayoutUpdated -= handler;

            AddItems();
        };
        element.LayoutUpdated += handler;

上記のコードはAddItems、次のレイアウト パスで呼び出されます。これを試してみて、それが役立つかどうかを確認してください!

于 2013-02-24T08:17:04.260 に答える