Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 9212839
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 18, 20262026-06-18T01:36:58+00:00 2026-06-18T01:36:58+00:00

I have a page layout in xaml containing a grid with several gridviews which

  • 0

I have a page layout in xaml containing a grid with several gridviews which represent different contents and individual styles.

This is the hub of my application that presents these different contents like for example:
artists, performances, records that are related somehow but different in content and therefore represented differently. ( entirely different itemtemplates and groupingstylefor each )

I want to Implement a semantic zoom that once zoomed out should show the custom made groups i have. So it should show artists, performances, recordings as groups when zoomed out.

Unfortunally i can only put a single GridView or ListView inside the ZoomedIn/Out tags.

Does anyone know how to work around this problem or can deliver a solid solution?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-18T01:36:59+00:00Added an answer on June 18, 2026 at 1:36 am

    I fould a solution, it works, but it’s yet rather clumsy. (I didn’t have enough time to look into it deeply enough.)
    I would actually appreciate it if someone would suggest a proper (reusable, truly object oriented :-), etc.) solution.

    You have to implement the ISemanticZoomInformation interface in a new class.

    I didn’t find a really detailed description about how the interface works, so I had to try a lot. My problem was, that a scrollViewer is needed to be able to jump to a certain point in the zoomedIn view, when you tap on a tile in the zoomedOutView. I couldn’t subclass from the scrollViewer class. Probably you’d need to subclass a subclass of GridView, that has a scrollViewer as a child (if that’s at all possible). In my solution it is (very wrongly) assumed, that it has a scrollViewer child. The other problem was, that if you pinch, the MakeVisible method is getting called and item.Bounds.Left will be 0.5 (and in this case you don’t want to scroll in the zoomedIn view anywhere), but if you tap on an element in the zoomedOut view, you have to set this value in your code and in this case, you want to scroll the scrollViewer in the MakeVisible method.

    E.g.:

    public class GridWithSemanticZoomInformation : Grid , ISemanticZoomInformation
    {
        private SemanticZoom _semanticZoomOwner;
        private Boolean _IsZoomedInView;
        private Boolean _IsActiveView;
    
        public void CompleteViewChange()
        {
            //
        }
    
        public void CompleteViewChangeFrom(SemanticZoomLocation source, SemanticZoomLocation destination)
        {
            this.IsActiveView = false;
        }
    
        public void CompleteViewChangeTo(SemanticZoomLocation source, SemanticZoomLocation destination)
        {
            this.IsActiveView = true;
                
        }
    
        public void InitializeViewChange()
        {
            //
        }
    
        public bool IsActiveView
        {
            get
            {
                return this._IsActiveView;
            }
            set
            {
                this._IsActiveView = value;
            }
        }
    
        public bool IsZoomedInView
        {
            get
            {
                return this._IsZoomedInView;
            }
            set
            {
                this._IsZoomedInView = value;
            }
        }
    
        public void MakeVisible(SemanticZoomLocation item)
        {
            this.SemanticZoomOwner.IsZoomedInViewActive = (this.Equals(this.SemanticZoomOwner.ZoomedInView));
    
            if (item.Bounds.Left != 0.5)
            {
                if (this.Children.Count() == 1)
                {
                    foreach (UIElement element in this.Children)
                    {
                        if (element.GetType() == typeof(ScrollViewer))
                        {
                            ((ScrollViewer)element).ScrollToHorizontalOffset(item.Bounds.Left);
                        }
                    }
                }
            }
        }
    
        public SemanticZoom SemanticZoomOwner
        {
            get
            {
                return this._semanticZoomOwner;
            }
            set
            {
                this._semanticZoomOwner = value;
            }
        }
    
        public void StartViewChangeFrom(SemanticZoomLocation source, SemanticZoomLocation destination)
        {
            //
        }
    
        public void StartViewChangeTo(SemanticZoomLocation source, SemanticZoomLocation destination)
        {
            //
        }
    }
    

    I wrote some clumsy event handlers for the cases, when you tap on the items in the zoomedOut view as well:

    private void FirstButton_Tapped(object sender, TappedRoutedEventArgs e)
    {
        this.ZoomedOutGrid.SemanticZoomOwner.ToggleActiveView();
        
        SemanticZoomLocation moveTo = new SemanticZoomLocation();
        moveTo.Bounds = new Rect(0, 0, 0, 0);
    
        this.ZoomedOutGrid.InitializeViewChange();
        this.ZoomedInGrid.InitializeViewChange();
        this.ZoomedOutGrid.StartViewChangeFrom(new SemanticZoomLocation(), new SemanticZoomLocation());
        this.ZoomedInGrid.StartViewChangeTo(new SemanticZoomLocation(), moveTo);
            
        this.ZoomedInGrid.MakeVisible(moveTo);
        this.ZoomedOutGrid.CompleteViewChangeFrom(new SemanticZoomLocation(), new SemanticZoomLocation());
        this.ZoomedInGrid.CompleteViewChangeTo(new SemanticZoomLocation(), new SemanticZoomLocation());
        this.ZoomedOutGrid.CompleteViewChange();
        this.ZoomedInGrid.CompleteViewChange();
    }
    
    private void SecondButton_Tapped(object sender, TappedRoutedEventArgs e)
    {
        SemanticZoomLocation moveTo = new SemanticZoomLocation();
        moveTo.Bounds = new Rect(270, 0, 0, 0);
        this.ZoomedOutGrid.InitializeViewChange();
        this.ZoomedInGrid.InitializeViewChange();
        this.ZoomedOutGrid.StartViewChangeFrom(new SemanticZoomLocation(), new SemanticZoomLocation());
        this.ZoomedInGrid.StartViewChangeTo(new SemanticZoomLocation(), moveTo);
    
        this.ZoomedInGrid.MakeVisible(moveTo);
        this.ZoomedOutGrid.CompleteViewChangeFrom(new SemanticZoomLocation(), new SemanticZoomLocation());
        this.ZoomedInGrid.CompleteViewChangeTo(new SemanticZoomLocation(), moveTo);
        this.ZoomedOutGrid.CompleteViewChange();
        this.ZoomedInGrid.CompleteViewChange();
    }
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

we have a Tiles layout page having Header, Menu, Body and Footer. In this
I have a difficulty on design a web page layout. This is my layout
I have this page layout: <header> <content> <footer> I have border-left and right applied
I have a page layout which works fine and it's one that I don't
I have an HTML page layout - something like this: <div id='header'> Header content
We have a custom Visualforce page that is within the Account page layout. This
I have the following page layout in my application: <Grid x:Name=ContentPanel Grid.Row=1> <ScrollViewer x:Name=ScrollViewer1
I have got a base XAML page which is the basis for a navigation
I have the following page layout using the 960 grid systm ---------------- header -----------------
In our SharePoint project, we have a page layout in which the user can

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.