internal void OnLayoutDefinitionChanged(LayoutDefinitionBase oldLayoutDefinition, LayoutDefinitionBase newLayoutDefinition) { this.owner.ScrollToTop(); if (oldLayoutDefinition != null) { oldLayoutDefinition.PropertyChanged -= LayoutDefinition_PropertyChanged; } if (newLayoutDefinition != null) { newLayoutDefinition.PropertyChanged += LayoutDefinition_PropertyChanged; } if (this.strategy != null) { this.strategy.FullyRecycle(); } this.strategy = newLayoutDefinition.CreateStrategy(this.modelGenerator, this.owner); if (this.model.CurrentDataProvider != null && this.model.CurrentDataProvider.Status == DataProviderStatus.Ready) { this.model.SetLayoutSource(); } this.strategy.FullyRecycle(); this.owner.UpdateService.RegisterUpdate((int)UpdateFlags.AffectsContent); // TODO: add callback for orientation changed }
private void LayoutModeSelectionChanged(object sender, SelectionChangedEventArgs e) { string definitionString = (sender as ComboBox).SelectedItem.ToString(); LayoutDefinitionBase layout = null; switch (definitionString) { case "Stack": layout = new StackLayoutDefinition(); this.listView.ItemTemplate = Root.Resources["DefaultTemplate"] as DataTemplate; break; case "Wrap": layout = new WrapLayoutDefinition() { ItemWidth = 400 }; this.listView.ItemTemplate = Root.Resources["DefaultTemplate"] as DataTemplate; break; case "Staggered": layout = new StaggeredLayoutDefinition(); this.listView.ItemTemplate = null; break; default: break; } this.listView.ItemTemplateSelector = Root.Resources["Selector"] as DataTemplateSelector; this.listView.LayoutDefinition = layout; }
internal void OnLayoutDefinitionChanged(LayoutDefinitionBase oldLayoutDefinition, LayoutDefinitionBase newLayoutDefinition) { this.layoutController.OnLayoutDefinitionChanged(oldLayoutDefinition, newLayoutDefinition); }