This is a migrated thread and some comments may be shown as answers.

positions setting in run time

1 Answer 88 Views
TileView
This is a migrated thread and some comments may be shown as answers.
rachel
Top achievements
Rank 1
rachel asked on 19 Dec 2011, 12:01 PM
hello,

i do binding to tileview Position. in system loading i set positions to the objects and i want the items will be shown order by those positions.
if i'm using with itemsSource, it works fine.
but if i'm using with prism region, the items do not shown as well and some items hidden under other items.

is there any solution to this?

1 Answer, 1 is accepted

Sort by
0
Tina Stancheva
Telerik team
answered on 22 Dec 2011, 10:14 AM
Hi Rachel,

When you're populating the RadTileView region with modules following the PRISM guidelines, you need to keep in mind that the RadTileView.Items will be ordered based on the order in which their modules are loaded. Basically as soon as a module is loaded it is added to its region - in this case to the RadTileView.Items collection. And when you bind the items Position property and try to control it as well, it may not work as expected. In order to use the Position property you need to have all items loaded so that you can place let's say Tile1 on the 3rd position. But in a PRISM scenario, when you load module1 that defines RadTileViewItem1, the other modules may not yet be loaded and no RadTileViewItem containers are created for them. This is why the RadTileView won't know how to place the first item on the 3rd position, how much space should be left for the other items if there are any other items and so on.

I believe in your case the delay in loading all modules(RadTileViewItems) in a PRISM scenario is causing the issues. And this is why if you want to control the initial position of the items in this case, it is better to modify the Bootstrapper CreateModuleCatalog() method to load the modules using dependencies. Taking advantage of this feature of the PRISM framework will allow you to control the order in which the modules are loaded and therefore the order in which the RadTileViewItems are initialized and ordered in the RadTileView region.
Below you can see an example of how to populate the RadTileView with 3 modules that will create 3 RadTileViewItems in the following order - TileItem2, TileItem3, TileItem1
protected override IModuleCatalog CreateModuleCatalog()
{
    ModuleCatalog catalog = new ModuleCatalog();
    catalog.AddModule(typeof(Module2.Module2));
    catalog.AddModule(typeof(Module3.Module3), "Module2");
    catalog.AddModule(typeof(Module1.Module1), "Module3");
    return catalog;
}

And once all modules are loaded you can change the Position property of the items through binding or directly.

Regards,
Tina Stancheva
the Telerik team

Explore the entire Telerik portfolio by downloading the Ultimate Collection trial package. Get it now >>

Tags
TileView
Asked by
rachel
Top achievements
Rank 1
Answers by
Tina Stancheva
Telerik team
Share this question
or