but when I click the button, the item is still there. when I debug it I can see in the group that the item is being removed but I guess I need to do something else to refresh the gridview UI to show the updated source

ok, when I use the built in RemoveAt like in the sample it is working, the problem is I have a vector of groups which have inside the a vector of items (I'm using the grid app template) and I need to use my custom RemoveItem function (see above) which
means I need to notify the AllGroups vector that I've removed an item so he can notify the gridview that it should be updated. how can I do that?

Your implementation seems a bit complex. Can you put a sample VC project on your Skydrive account that reproduces the issue? I'll pull it down, take a look and try to see if I can figure out what is happening.

ok, I really didn't do anything special, you can get the grid app template from the VS, go to the groupedItemsPage, and add a button. now in the button click handler I want it to remove the selected item in the gridview. let's say I want to remove the first
item, if I'm using AllGroups->removeAt(0) it will remove the first group and not the first item.

right now the workaround I've found is getting the group of the item, removing the item from the group and using AllGroups->SetAt(i,group), but I guess there is a better solution for this...

The answer really depends on how you are determining what item is selected. Personally I might change the SelectionMode to "single" and then query the selected item in the grid view and just remove the object from the grid view. Or only allow the user to
remove the item from the detail page. Again it really depends on how you determine what is selected.