Нельзя использовать свойство Source для загрузки словаря ресурсов из кода.
С MSDN :
"Объединенные словари могут быть добавлены в словарь ресурсов с помощью кода. По умолчанию, изначально пустой ResourceDictionary, который существует для любого свойства ресурсов, также имеет свойство по умолчанию, изначально пустое свойство коллекции MergedDictionaries. Чтобы добавить объединенный словарь с помощью кода, вы получаете ссылаться на требуемый первичный ResourceDictionary, получить его значение свойства MergedDictionaries и вызвать Add в универсальной коллекции, содержащейся в MergedDictionaries. Объект, который вы добавляете, должен быть новым ResourceDictionary. В коде вы не устанавливаете свойство Source. Вместо этого вы необходимо получить объект ResourceDictionary путем его создания или загрузки. Один из способов загрузить существующий ResourceDictionary для вызова XamlReader.Load в существующем потоке файлов XAML с корневым каталогом ResourceDictionary, а затем приведение возвращаемого значения XamlReader.Load к ResourceDictionary. "
Следовательно, некоторый псевдокод:
ResourceDictionary myResourceDictionary = XamlReader.Load(someXamlStreamReader);
anotherResourceDictionary.MergedDictionaries.Add(myResourceDictionary);
Вот еще один пример того, как это сделать:
Uri uri = new Uri("/PageResourceFile.xaml", UriKind.Relative);
StreamResourceInfo info = Application.GetResourceStream(uri);
System.Windows.Markup.XamlReader reader = new System.Windows.Markup.XamlReader();
Page page = (Page)reader.LoadAsync(info.Stream);