How do I set WPF xaml form's Design DataContext to class that uses generic type parameters How do I set WPF xaml form's Design DataContext to class that uses generic type parameters wpf wpf

How do I set WPF xaml form's Design DataContext to class that uses generic type parameters


That is not possible unless the markup extension (DesignInstance) provides properties to pass type arguments, which i doubt. So you might want to subclass as suggested or write your own markup extension which creates generic instances (in fact that is what i am doing right now).

Edit: This extension should do it:

public class GenericObjectFactoryExtension : MarkupExtension{    public Type Type { get; set; }    public Type T { get; set; }    public override object ProvideValue(IServiceProvider serviceProvider)    {        var genericType = Type.MakeGenericType(T);        return Activator.CreateInstance(genericType);    }}

Initially i had some problems getting the object type from a type-name but you can let the XAML parser resolve the type for you which is neat:

DataContext="{me:GenericObjectFactory Type={x:Type Dialogs:CustomerSearchDlogViewModel`1},                                      T=Data:Customer}"

(Note the `1 at the end to reference a generic type. If you drop the x:Type wrapping the backtick will cause an error.)


A clean option would be to create a new type which just flattens the generic type:

public class CustomerSearchDialogViewModel : SearchDialogViewModel<Customer> {}