Bind an Incode DataTemplate in WPF

Posted by Mike Bynum on Stack Overflow See other posts from Stack Overflow or by Mike Bynum
Published on 2012-09-26T23:05:30Z Indexed on 2012/09/27 9:37 UTC
Read the original article Hit count: 176

Filed under:
|
|

I have a WPF Application which is using MVVM.

I know that there ways of doing this in XAML but I am working on a plugin architecture and came up with a solution where a plugin exposes it's viewmodel to my plugin host's viewmodel and it's datatemplate. I want to leave the lifetime management of the plugin view up to WPF. I have tried having the plugins expose a UserControl but ran into issues when WPF decided to dispose of my UserControl so I would not reattach it without weird hacky work arounds. I am having issues getting some sort of binding working to where i can bind a control to the data and it's template to my data template.

I have a ViewModel which looks something like:

public class MyViewModel
{
    public DataTemplate SelectedTemplate{ get; set;}
    public object SelectedViewModel {get; set;}
}

The selected template and viewmodel are determined somewhere else in the code but are irrelevant to my question.

My question is how i can bind to a DataTemplate so that I know how to display the data shown in the SelectedViewModel.

The DataTemplate is a DataTemplate created incode which respresents:

<DataTemplate DataType="{x:Type vm:MyViewModel}">
    <v:MyUserControl />
</DataTemplate>

I have tried:

<UserControl Template="{Binding Path=SelectedTemplate}" 
    Content="{Binding Path=SelectedViewModel"} />

But UserControl expects a control template and not a data template.

© Stack Overflow or respective owner

Related posts about c#

Related posts about wpf