Изменить пользовательский элемент управления wpf с помощью devexpress mvvm

Я пытаюсь изменить UserControl в главном окне. Я использую модели просмотра poco от devpress.

Отображается главное окно, за исключением того места, где должен быть loginView, оно отображает «LoginViewModel_xxxxxx».

LoginView.xaml это UserControl.

У меня есть

MainWindow.xaml

    <Grid Row="1">
        <ContentControl Content="{Binding CurrentViewModel}"/>
    </Grid>

MainWindowViewModel.cs

public virtual object CurrentViewModel { get; set; }

public static MainWindowViewModel Create()
{
   return ViewModelSource.Create(() => new MainWindowViewModel());
}
protected MainWindowViewModel()
{
   CurrentViewModel = LoginViewModel.Create();
}

Логинвиевмодел.cs

public static LoginViewModel Create()
{
    return ViewModelSource.Create(() => new LoginViewModel());
}

protected LoginViewModel()
{
    //unrelated code
}

person Cheese    schedule 16.08.2018    source источник


Ответы (1)


Попробуйте определить DataTemplate для LoginViewModel:

<ContentControl Content="{Binding CurrentViewModel}">
    <ContentControl.Resources>
        <DataTemplate DataType="{x:Type local:LoginViewModel}">
            <local:LoginView />
        </DataTemplate>
    </ContentControl.Resources>
</ContentControl>
person mm8    schedule 16.08.2018
comment
Просто примечание для тех, кто использует это; если ваш ContentControl может быть любым количеством различных типов модели представления, вам необходимо иметь несколько DataTemplates, определенных в ресурсах, по одному для каждого типа. - person Bradley Uffner; 16.08.2018