Semantic zoom is one of the most prominent feature of windows 8.1, you can get much detail over here.

One of the major challenges which one face in this is if we want to develop an application in which the zoom out and zoom section section doesn't map to the same set of data.

For example:

Suppose we have a 7 gridview item in our zoom in on screen out of which 2 are hidden and now when you zoom out you actually binds to a list of items which only have items which are visible.

So now as the source for zoom out and zoom in grid is not same we need to programmatically manage the semantic zoom feature so that user still gets the same experience.

In order to overcome this you need add event ViewChangeStarted to your SemanticZoom control and have the following code implemented.

<SemanticZoom x:Name="SemanticZoomPatientsList" ViewChangeStarted="SemanticZoom_OnViewChangeStarted" >

protected void OnSemanticZoomViewChangeStarted(object sender, SemanticZoomViewChangedEventArgs e, GridView zoomOutView, GridView zoomInView)

        {

            if (zoomOutView != null && zoomOutView.Items != null && zoomInView != null && zoomInView.Items != null)

            {

                zoomInView.ScrollIntoView(zoomInView.Items[0], ScrollIntoViewAlignment.Default);

                if (e.IsSourceZoomedInView == false)

                {

                    var index = zoomOutView.Items.IndexOf(e.SourceItem.Item);

                    if (zoomInView.Items != null)

                    {

                        var item = zoomInView.Items[index];

                        while (((GridViewItem)item).Visibility == Visibility.Collapsed && index <= zoomInView.Items.Count)

                        {

                            index++;

                            item = zoomInView.Items[index];

                        }

                         e.DestinationItem.Item = item;

                    }

                }

            }

        }

Hope this will help you.