Это не идеальное решение.Для этого требуется имя сборки и корневое пространство имен.Также требуется, чтобы структура папок сборок соответствовала структуре пространства имён.
var assemblyName = pageType.Assembly.FullName.Substring(0, pageType.Assembly.FullName.IndexOf(","));
var pageName = pageType.FullName;
pageName = pageName.Substring(assemblyName.Length+1);
pageName = pageName.Replace(".", "/");
var targetString = string.Format("/{0};component/{1}.xaml",assemblyName, pageName);
var targetUri = new Uri(targetString, UriKind.Relative);