Извините за это - я начал туда добираться, и спасибо за разъяснения. Тогда вам лучше всего пройтись вверх по визуальному дереву от вашего элемента управления, чтобы найти страницу, которую вы можете получить на NavigationContext. В моем примере ниже у меня есть кнопка на пользовательском элементе управления на странице, событие щелчка которой находит контекст навигации и ищет определенный параметр навигации - я не мог сказать из вопроса или вашего продолжения, что будет управлять элементом управления чтобы «хотеть» найти содержимое строки запроса.
(Примечание о получении информации из ctor следует приведенному ниже коду)
public partial class WindowsPhoneControl1 : UserControl
{
public WindowsPhoneControl1()
{
InitializeComponent();
}
private void button1_Click(object sender, RoutedEventArgs e)
{
GetTheQueryString();
}
private void GetTheQueryString()
{
var result = "No Joy";
var page = FindRootPage(this);
if (page != null)
{
if (page.NavigationContext.QueryString.ContainsKey("Param"))
{
result = page.NavigationContext.QueryString["Param"];
}
}
queryStringText.Text = result;
}
private static PhoneApplicationPage FindRootPage(FrameworkElement item)
{
if (item != null && !(item is PhoneApplicationPage))
{
item = FindRootPage(item.Parent as FrameworkElement);
}
return item as PhoneApplicationPage;
}
}
Обратите внимание, что это не будет работать с ctor из-за того, как работает Xaml ... тег Xml управляет вызываемым ctor, затем свойства устанавливаются как указано, затем он добавляется как дочерний элемент / item / etc его контейнер. Если вам все же нужно добраться до контекста как можно скорее, используя эту технику «ходьбы по дереву», обработайте событие Loaded элемента управления, к которому элементу управления будут предоставлен родитель и дерево, по которому можно пройти ...
public WindowsPhoneControl1()
{
InitializeComponent();
Loaded += WindowsPhoneControl1_Loaded;
}
private void WindowsPhoneControl1_Loaded(Object sender, RoutedEventArgs e)
{
GetTheQueryString();
}