使用App.xaml中的ResourceDictionary自动完成

时间:2019-02-19 13:04:23

标签: c# wpf xaml controltemplate

这是我当前的项目架构:

Program.Startup.csproj
--- Styles
------ MyStyles.xaml
--- App.xaml

Program.View.csproj
--- MainWindow.xaml
--- SettingsView.xaml
--- ...

我正在使用我的app.xaml为所有控件加载样式:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary  Source="Styles/MyStyles.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

每当我在主窗口中使用一种样式时,在设计期间都找不到该样式。 开发视图/窗口时,有没有办法使自动完成工作停止1000个“未找到的错误”?

1 个答案:

答案 0 :(得分:-1)

窗口是内容控件。

因此,您可以根据需要切换内容。

将主窗口放在与入口点完全不同的项目中并没有多大意义。

如果要在其中使用foo,则可以新建foo的实例,并使MainWindow.Content = myFoo。

要代替酒吧...。您可以将其内容设置为bar的实例。

无论如何,无论您的主要解决方案是什么,都可以添加其他项目。

您可以添加现有项目,以便您的代码在同一解决方案中都可见。

因此,您的意见将是

然后在app.xaml中,您可以合并入口点解决方案中的资源词典,并使用包符号来合并其他项目中的资源词典。

这是一个实时应用程序的副本。xaml会这样做。

<Application x:Class="ScenarioEditor.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             Startup="Application_Startup"
         >
<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary  Source="pack://application:,,,/UILib;component/Resources/Geometries.xaml"/>
            <ResourceDictionary  Source="pack://application:,,,/UILib;component/Resources/ControlTemplates.xaml"/>
            <ResourceDictionary  Source="pack://application:,,,/UILib;component/Resources/FontResources.xaml"/>
            <ResourceDictionary  Source="/Resources/ScenarioEditorResources.xaml"/>
            <ResourceDictionary  Source="pack://application:,,,/UILib;component/Resources/UILibResources.xaml"/>
            <ResourceDictionary  Source="pack://application:,,,/UILib;component/Resources/HypsoColoursRD.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

我的解决方案是Scenario Editor,而ScenarioEditorResources是,其中引用了其他几个项目,并且它们的资源字典也已合并。 我通过在Visual Studio中打开方案编辑器解决方案来工作。

当我编辑其中一个引用项目中的内容时,UILib会合并所有资源。

您也可以添加设计资源字典,但是看起来它可以从exe加载到dll中。

不是常规的工作方式。