首页 > 解决方案 > VSIX WPF 向导而不是表单

问题描述

我正在开发 Visual Studio 的扩展,我目前正在考虑使用 WPF 而不是 Forms 作为模板向导。

我已经使用 Forms 完成了所有工作,但我更喜欢 WPF 的外观和使用 WPF,但我不确定我正在尝试做的事情是否可行 - 或者我应该如何正确地去做。

我的 VSIX 包含您的典型布局,它是一个包含 3 个项目的解决方案;
1. MyProjectTemplate (C# 项目模板)
2. MyProjectVSX (C# VSIX 模板)
3. MyWizardWPF (WPF 应用程序)

我也在使用 MahApps.Metro 让它看起来更时尚一些。添加(通过 NuGet)并由 MyProjectVSX 和 MyWizardWPF 引用。

虽然它有效——当我去创建一个模板时 WPF 出现了——它完全没有任何样式。它基本上只是看起来像一个 Windows 95 应用程序。

我假设这与 App.xml 相关并且无法找到它。但是我完全不知道如何将所有这些联系在一起。我收到一堆警告,它无法找到各种与样式相关的东西。例如;

System.Windows.ResourceDictionary 警告:9:找不到资源;ResourceKey='MahApps.Brushes.IdealForeground'
System.Windows.ResourceDictionary 警告:9:找不到资源;ResourceKey='MahApps.Brushes.ThemeForeground'

我尝试过使用 ResourceDictionary URI,将 App.xml 复制到我的 VSX 项目中。尝试将其构建为类库而不是应用程序,但无济于事。

我在这里想要实现的目标是否可行......?

标签: c#wpftemplatesbindingvsix

解决方案


好吧,我能够参考 MahApps.Metro。好像我大大忽略了这一切。但是,我仍然不确定这是否是正确的方法。但它有效。

我在 Window.xaml 本身中引用了 MahApps.Metro,而不是通过 App.xaml,就像这样;

<Window.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <!--  MahApps.Metro resource dictionaries. Make sure that all file names are Case Sensitive!  -->
            <ResourceDictionary Source="/MahApps.Metro;component/Styles/Controls.xaml" />
            <ResourceDictionary Source="/MahApps.Metro;component/Styles/Fonts.xaml" />
            <!--  Accent and AppTheme setting  -->
            <ResourceDictionary Source="/MahApps.Metro;component/Styles/Themes/Dark.Blue.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Window.Resources>

如果我创建一个 WPF 用户控件,这也有效,这将使整个项目不那么臃肿 - 但设计师不会使用 MahApps.Metro 样式。我还没有找到解决这个问题的方法。


推荐阅读