Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 5th, 2012  |  syntax: None  |  size: 1.54 KB  |  hits: 8  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Changing part of view at runtime
  2. <ContentControl DataContext="{Binding CinemaShowsOverview }" Template="{StaticResource ListView}" />
  3.        
  4. <ContentControl DataContext="{Binding CinemaShowsOverview }" Template="{StaticResource PosterView}" />
  5.        
  6. public class DataTemplateSelector : ContentControl
  7. {
  8.     public virtual DataTemplate SelectTemplate(object item, DependencyObject container)
  9.     {
  10.         throw new NotImplementedException();
  11.     }
  12.  
  13.     protected override void OnContentChanged(object oldContent, object newContent)
  14.     {
  15.         base.OnContentChanged(oldContent, newContent);
  16.  
  17.         ContentTemplate = SelectTemplate(newContent, this);
  18.     }
  19. }
  20.        
  21. public class CinemaShowsTemplateSelector : DataTemplateSelector
  22. {
  23.     public DataTemplate ListTemplate
  24.     {
  25.         get;
  26.         set;
  27.     }
  28.  
  29.     public DataTemplate PosterTemplate
  30.     {
  31.         get;
  32.         set;
  33.     }
  34.  
  35.     public DataTemplate DefaultTemplate
  36.     {
  37.         get;
  38.         set;
  39.     }
  40.  
  41.     public override DataTemplate SelectTemplate(object item, DependencyObject container)
  42.     {
  43.         if (item == null)
  44.             return DefaultTemplate;
  45.  
  46.         var viewModel = item as CinemaShowsOverview;
  47.         if (viewModel != null)
  48.             return viewModel.IsPoster ? PowerTemplate : ListTemplate;
  49.         else
  50.             return DefaultTemplate;
  51.     }
  52. }
  53.        
  54. <assets:CinemaShowsTemplateSelector PosterTemplate="{StaticResource PosterView}"
  55.                                     ListTemplate="{StaticResource ListView}"
  56.                                     Content="{Binding CinemaShowsOverview}">