我在这个问题上遇到了一段时间的问题,需要帮助!我有一个父项目正在实现一个在父项目之外定义的用户控件。名为FullWebBrowser(一个webbrowser控件)的用户控件被加载到我的MainPage.xaml中,该工具正常工作,但是当我试图在父项目的其他页面中创建此用户控件的新实例时(这是NavigatedTo from MainPage.xaml中)。 对于快速参考我的代码如下:在父项目无法正常工作的情况下创建用户控件类的新实例
MainPage.xaml中
<Grid x:Name="ContentPanel" Grid.Row="0">
<my:FullWebBrowser Name="TheBrowser" InitialUri="http://www.google.com" />
</Grid>
的FullWebBrowser正常工作,以及控制现在被命名为“TheBrowser”的FullWebBrowser控制的导航和诸如此类的东西MainPage.xaml中用于MainPage.xaml.cs中。 由于某种原因,我不允许在其他导航到MainPage.xaml的页面中调用TheBrowser,例如SharePage.xaml。为什么会这样,是否有一种方法可以访问名为TheBrowser的FullWebBrowser以用于其他页面?
为了解决这个问题,我试图在我的SharePage代码中创建一个FullBrowserControl的新实例,并命名为'browser'。需要注意的是,SharePage的目的是模仿默认的Windows Phone Internet Explorer共享页面菜单项选项,以便我可以允许用户通过电子邮件,文本或社交网络共享当前网页网址。
SharePage.xaml.cs
public partial class SharePage : PhoneApplicationPage
{
//new instance of FullWebBrowser
FullWebBrowser browser = new FullWebBrowser();
public SharePage()
{
InitializeComponent();
}
private void SocialNetworks_Click(object sender, RoutedEventArgs e)
{
ShareLinkTask shareLinkTask = new ShareLinkTask();
Uri shareUrl = new Uri(browser.currentUrl());
shareLinkTask.Title = "Shared Link!";
shareLinkTask.LinkUri = shareUrl;
shareLinkTask.Message = "Check out this link!";
shareLinkTask.Show();
}
private void Messaging_Click(object sender, RoutedEventArgs e)
{
SmsComposeTask smsComposeTask = new SmsComposeTask();
Uri shareUrl = new Uri(browser.currentUrl());
smsComposeTask.To = "";
smsComposeTask.Body = "Check out this link! " + shareUrl;
smsComposeTask.Show();
}
private void Email_Click(object sender, RoutedEventArgs e)
{
EmailComposeTask emailComposeTask = new EmailComposeTask();
Uri shareUrl = new Uri(browser.currentUrl());
emailComposeTask.Subject = "Link share from Quest internet browser";
emailComposeTask.Body = "Check out this link! " + shareUrl;
emailComposeTask.To = "";
emailComposeTask.Cc = "";
emailComposeTask.Bcc = "";
emailComposeTask.Show();
}
}
似乎在SharePage.xaml.cs创造FullWebBrowser的新实例运行不正常,因为当我把代码从每个SharePage.xaml.cs点击事件并将其放置在MainPage.xaml.cs中(并将FullBrowserName更改为'TheBrowser',因为它在MainPage.xaml中命名,而不是在SharePage.xaml.cs中命名的'browser'),因此一切正常。我是不是正确地创建了usercontrol的新实例,还是应该做其他事情来让我正确执行SharePage操作?
@Matt_Lacey所以你说,即使在我的SharePage.xaml.cs中创建这个外部用户控件的新实例,也不会允许我在我的SharePage.xaml.cs代码中访问相同的功能,就像添加外部用户控制到我的MainPage.xaml xaml代码?这让我感到困惑。如果是这样,我应该如何以及在哪里实例化这个外部用户控件,以便在所有页面中都可用(即使我在MainPage.xaml中定义了该页面以在该页面上呈现webbrowser)?谢谢你的回应! – Matthew 2012-03-05 22:47:44
@Mthethew如果你在“SharePage”中创建它的一个新实例,那么它将不会是同一个控件,所以试图访问它的属性将是毫无意义的。让我更新并扩展我的答案。 – 2012-03-06 00:01:13
@Matt_Lacey,实现很好!我真的很感谢你用这些术语解释创建webbrowser控件的一个新实例,而不是传递url和实现querystring来传递currentUrl()方法。谢谢! – Matthew 2012-03-06 01:02:44