Windows Phone 7 : ArgumentException “The parameter is incorrect” bug in Pivot.Remove()

Hi,

First of all i would like to say that im very glad to start my first blog. I’ll write here some ideas on WP7 and C# programming.

My first post will be rather short. It is dedicated to weird bug in Pivot control  that comes with Windows Phone 7 SDK.

Short description:

1. You create a markup with pivot control and some pivot items in it.  Important Note: At least 1 pivot item should have complex header. By complex i mean a non-string header but a header with some controls in it.
2. At some point in application flow you want to remove the PivotItem from Pivot.

Here you probably will get an ArgumentException like on the image below
exception

 

It is hard to say what exactly causes this exception, but it seems that there is a but in logic that manages headers in Pivot control.

For the project i’m currently working on i created a workaround. It is a class derived from Pivot that has 3 methods that help with this task.

In current implementation when user tries to scroll to hidden pivot item it just skips it. To keep UI consistent we make pivotItem Header null and restore it to previous value when UnHidePivotItem is called.

 

Links to sources:

1. https://www.dropbox.com/s/uqb4p2rqczybbik/PivotWithHiding.cs – class only
2. https://www.dropbox.com/s/ls281kfsa3ibvgr/PivotRemoveBugWorkaround.zip – full project where you can remove and add pivot items by clicking appBarButtons