Я думаю, что вижу проблему, но, как указал Остин, в вашем первоначальном описании не так много всего.Похоже, вы пытаетесь получить доступ к NavgationService (который является PhoneApplicationPage свойством) из UserControl, который вы помещаете на эту страницу.
Как и во многих других API-интерфейсах, выесть пара вариантов.Во-первых, вы можете получить доступ к PhoneApplicationFrame (который содержит ваши страницы и управляет навигацией) и использовать его для навигации:
var frame = App.Current.RootVisual as PhoneApplicationFrame;
frame.Navigate(new Uri("/TargetPage.xaml", UriKind.Relative));
В качестве альтернативы, вы можете просматривать дерево визуалов элемента управления, используя VisualTreeHelper пока не дойдете до содержащей страницы:
var page = GetParentOfType<PhoneApplicationPage>(this); // this is your user control
private static T GetParentOfType<T>(DependencyObject item) where T : DependencyObject
{
if (item == null) throw new ArgumentNullException("item");
T result;
var parent = VisualTreeHelper.GetParent(item);
if (parent == null) return null;
else if (parent.GetType().IsSubclassOf(typeof(T))
{
result = (T)parent;
}
else result = GetParameterOfType<T>(parent);
return result;
}
Как видите, подход VisualTree включает в себя больше кода, но дает вам объект содержащей страницы, где у вас больше доступа к таким вещам, как NavigationContext и т. Д.
Надеюсь, что это был ваш вопрос (и ваш ответ.)