Your Privacy Matters: We use our own and third-party cookies to improve your experience on our website. By continuing to use the website we understand that you accept their use. Cookie Policy
1005
Maximize tile from code fails
posted

Hi,

I am trying to write a Prism (CAL) adapter for the XamTilesControl, and in my implementation I would like to have only one active tile, and this tile should be the one and only maximized tile. So, maximizing a tile should make it's view active (easily handled by hooking into the TileStateChanged event), and when the view is made active programmatically then the tile should be maximized, and that's where I run into problems.

When a new view is added to the prism region, I add it to the tile control, then I attempt to get the tile by calling TileFromItem(), but this returns null. :(  After reading some other posts I tried calling UpdateLayout() first, but that didn't help, but after a little more reading I found another suggestion to use Dispatcher.BeginInvoke().  In the end I had to use the following code (_instance is my XamTilesControl):

                    _instance.Dispatcher.BeginInvoke((Action)(() =>
                    {
                        _instance.UpdateLayout();
                        Tile tile = _instance.TileFromItem(e.NewItems[0]);
                        if (tile != null)
                        {
                            tile.State = TileState.Maximized;
                        }
                    }));

This did allow me to access the Tile for the view, and to set it's state to Maximized, but unfortunately it doesn't actually maximize the view!  Instead the view appears to be still in normal mode, but it does have a minimize button (as opposed to a maximize button when I don't set the tile state to Maximized), which implies that the tile thinks it's maximized!  If I click the button it changes to a Maximize button and the tile remains the same, when I click it again it maximizes.

So I have two problems, first I would like to know the proper way to obtain the Tile after adding an item to the Items collection, and second I would like know how to maximize the tile programmatically.  If anyone has any ideas I would be very grateful.

Thanks.

Brian

 

Parents Reply Children
No Data