Skip to content

Instantly share code, notes, and snippets.

@maxfridbe
Created November 15, 2012 17:14
Show Gist options
  • Save maxfridbe/4079842 to your computer and use it in GitHub Desktop.
Save maxfridbe/4079842 to your computer and use it in GitHub Desktop.
MVVM Published Locators
public class ViewSelector : DataTemplateSelector
{
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
/*
<Window.Resources>
<Selectors:ViewSelector x:Key="ViewSelector">
</Selectors:ViewSelector>
</Window.Resources>
<DockPanel Name="pnlDockMain" >
<ContentControl Name="ctrlContentCenter"
Content="{Binding CurrentViewModel}"
ContentTemplateSelector="{StaticResource ViewSelector}" />
</DockPanel>
*/
if (item == null)
return new DataTemplate();
var viewTypeName = item.GetType().Name.Replace("Model", string.Empty);
var viewType = item.GetType().Assembly.GetTypes().Single(t => t.Name == viewTypeName);
var dt = new DataTemplate(viewType)
{
VisualTree = new FrameworkElementFactory(viewType)
};
return dt;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment