在代码中定义 DataTemplate 时,视图不会加载

问题描述

我正在尝试从控制台应用程序启动 WPF 应用程序,并希望在 App.xaml.cs 而不是 App.xaml 文件中定义 ResourceDictionary。

这就是我的 ResourceDictionary 的样子。

<ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="/Styles/General.xaml" />
    </ResourceDictionary.MergedDictionaries>

    <DataTemplate DataType="{x:Type vm:Appviewmodel}">
        <views:AppView/>
    </DataTemplate>
    <DataTemplate DataType="{x:Type vm:Activityviewmodel}">
        <views:ActivityView/>
    </DataTemplate>
</ResourceDictionary>

这是我想出来的。

public App()
{
    Resources.MergedDictionaries.Add(new ResourceDictionary { Source = new Uri("/AssemblyName;component/Styles/General.xaml",UriKind.Relative) });

    Resources.Add("appView",new DataTemplate { DataType = typeof(Appviewmodel),VisualTree = new FrameworkElementFactory(typeof(AppView)) });
    Resources.Add("activityView",new DataTemplate { DataType = typeof(Activityviewmodel),VisualTree = new FrameworkElementFactory(typeof(ActivityView)) });
}

总的来说,它似乎有效。
App.xaml 中定义 DataTemplates 时,导航按我的预期工作。
一旦我切换到 App.xaml.cs 版本,视图就不会加载。屏幕上只显示我的 viewmodel 的类名。

我想 VisualTree = new FrameworkElementFactory(typeof(ActivityView) 是我犯错的地方...我错过了什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)