You can make Intellisense 100% for XAML {StaticResource} in Visual Studio.
Tested
- WPF / C #
- Visual Studio 2015 Update 3
Step 1. Moving resources to a common project
The key is to move all the resources referenced by the ResourceDictionary to the shared project:

Step 2: intellisense development time
We are not quite there yet. XAML runtime starts the runtime if you enable resources twice.
If we include the .xaml file more than once in the entire project, we can include it at design time, but not at run time:
public class DesignTimeResourceDictionary : ResourceDictionary { private Uri source; public new Uri Source { get { if ((bool)DesignerProperties.IsInDesignModeProperty.GetMetadata(typeof(DependencyObject)).DefaultValue) { return null; } return this.source; } set { this.source = value; } } }
Then we can add development time resources:
<ResourceDictionary.MergedDictionaries> <dr:DesignTimeResourceDictionary Source="/Project.Name;component/Folder/SharedResourceA.xaml" /> <dr:DesignTimeResourceDictionary Source="/Project.Name;component/Folder/SharedResourceB.xaml" /> </ResourceDictionary.MergedDictionaries>
If we use ReSharper, it will suggest automatically adding the namespace prefix to the header:
xmlns:dr="clr-namespace:MyNamespace;assembly=Project.Name"
Appendix A: Extra for Experts: Why Do I Need Stage 1?
As an aside, Intellisense in XAML is the same as Intellisense in C #: it only works with referenced subprojects. That's why if projects A and B want to share some code, you have to put it in the C class library referenced by projects A and B. This is unlike C or C ++, where the #including file fundamentally makes it available for all subfiles.
With XAML, you can spoof and add static resources to the Main Application Project (see above), and the XAML runtime will work fine - but Intellisense will not work during development, presumably because it is based on the same engine that is used for c # intellisense.
To get Intellisense to work all the time in XAML, Visual Studio Intellisense would have to scan through each parent project (instead of just going to the project links).