Mar 29, 2014 at 8:13 PM
Edited May 14, 2016 at 7:33 PM
This article has been moved to
The WPF Designer works best if there is just one WPF project in the solution which is the application (exe) and so contains the App.xaml file. Then it will find all XAML resources that are necessary to render the views flawlessly. But in larger applications
the views are often separated into different WPF projects (e.g. per module). In such a scenario the WPF designer is not able to find the resources defined or referenced in App.xaml anymore when this file resides in another project.
Microsoft introduced the Design-time Resources Dictionary file to overcome this issue. Blend is able to detect that some resources could not be resolved and asks us if we want to add a resource dictionary to use for displaying resources at design time.
Visual Studio uses this file as well but it is not able to create the file. If you want to create this file in Visual Studio then you have to create a Resource Dictionary (WPF). Use “DesignTimeResources.xaml” as file name and after creation move the file into
the “Properties” folder in your project tree.
Now unload the project (Context menu of the project node in Solution Explorer). Then select “Edit YourProject.csproj” in the context menu of the unloaded project node. Search for the XML element that contains “DesignTimeResources.xaml” and replace it with the
following XML snippet:
<Page Include="Properties\DesignTimeResources.xaml" Condition="'$(DesignTime)'=='true' OR ('$(SolutionPath)'!='' AND Exists('$(SolutionPath)') AND '$(BuildingInsideVisualStudio)'!='true' AND '$(BuildingInsideExpressionBlend)'!='true')">
Reload the project. The DesignTimeResource dictionary can be filled with MergedDictionaries. In the following example the merged dictionaries reside in another assembly. Thus, the long Source path is used.
Extract of EmailClient.Modules.Presentation/Properties/DesignTimeResources.xaml
This file will be ignored by the compiler. It does not have any effects on the running application. It is just used to improve the design time experience.