From bcfb6a2533f243c2fed4950347b54e5e74db45cb Mon Sep 17 00:00:00 2001 From: Nigel Sampson Date: Wed, 11 Mar 2015 10:50:03 +1300 Subject: [PATCH] DeterminePackUriFromType only replaces assembly name when at start of view name. Resolves #124 --- src/Caliburn.Micro.Platform/ViewLocator.cs | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/Caliburn.Micro.Platform/ViewLocator.cs b/src/Caliburn.Micro.Platform/ViewLocator.cs index 74e8bc201..b54739cf8 100644 --- a/src/Caliburn.Micro.Platform/ViewLocator.cs +++ b/src/Caliburn.Micro.Platform/ViewLocator.cs @@ -406,23 +406,23 @@ public static void AddSubNamespaceMapping(string nsSource, string nsTarget, stri public static Func DeterminePackUriFromType = (viewModelType, viewType) => { #if !WinRT var assemblyName = viewType.Assembly.GetAssemblyName(); - var uri = viewType.FullName.Replace(assemblyName, string.Empty).Replace(".", "/") + ".xaml"; - - if(!Application.Current.GetType().Assembly.GetAssemblyName().Equals(assemblyName)) { - return "/" + assemblyName + ";component" + uri; - } - - return uri; + var applicationAssemblyName = Application.Current.GetType().Assembly.GetAssemblyName(); #else var assemblyName = viewType.GetTypeInfo().Assembly.GetAssemblyName(); - var uri = viewType.FullName.Replace(assemblyName, string.Empty).Replace(".", "/") + ".xaml"; + var applicationAssemblyName = Application.Current.GetType().GetTypeInfo().Assembly.GetAssemblyName(); +#endif + var viewTypeName = viewType.FullName; + + if (viewTypeName.StartsWith(assemblyName)) + viewTypeName = viewTypeName.Substring(assemblyName.Length); - if (!Application.Current.GetType().GetTypeInfo().Assembly.GetAssemblyName().Equals(assemblyName)) { + var uri = viewTypeName.Replace(".", "/") + ".xaml"; + + if(!applicationAssemblyName.Equals(assemblyName)) { return "/" + assemblyName + ";component" + uri; } return uri; -#endif }; ///