我有一个简单的Windows Phone 7用户控件,我想在用户控件的构造函数中访问查询字符串集合。我尝试过很多方法,但似乎无法访问包含XAML的查询字符串集合。
本质上,我正在导航到页面,并且我的用户控件将访问查询字符串值以将该值写回界面。
我是否忘记添加程序集或引用或其他内容?
本质上,我正在导航到页面,并且我的用户控件将访问查询字符串值以将该值写回界面。
我是否忘记添加程序集或引用或其他内容?
我不确定您是否应该尝试从页面构造函数中获取信息,因为它不一定每次着陆在此页面上都会被调用。更好的方法是覆盖从PhoneApplicationPage继承的OnNavigatedTo方法。仔细看一下您的问题,您可能正在尝试在嵌入页面的控件内执行此操作,在这种情况下,您需要获取页面以获取导航信息。
无论如何,页面的NavigationContext属性具有QueryString参数,您可以使用它来访问所需的信息。
以下示例假设在导航到此页面时,查询字符串中有一个名为"Message"的参数:
public partial class MyPage : PhoneApplicationPage
{
// Constructor
public MyPage()
{
InitializeComponent();
}
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
base.OnNavigatedTo(e);
String navigationMessage;
if (NavigationContext.QueryString.TryGetValue("Message", out navigationMessage))
{
this.textBlock1.Text = navigationMessage;
}
}
}
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;
}
}
public WindowsPhoneControl1()
{
InitializeComponent();
Loaded += WindowsPhoneControl1_Loaded;
}
private void WindowsPhoneControl1_Loaded(Object sender, RoutedEventArgs e)
{
GetTheQueryString();
}