Xamarin - 来自另一个页面/视图的 WebView 更新 URL
Posted
技术标签:
【中文标题】Xamarin - 来自另一个页面/视图的 WebView 更新 URL【英文标题】:Xamarin - WebView update URL from another page/view 【发布时间】:2016-09-26 13:31:41 【问题描述】:我有一个非常基本的选项卡式应用程序 第一页是使用 Xamarin.Forms 的 Web 视图
<WebView x:Name="webview1" IsVisible="true" Source="" ></WebView>
我可以使用示例从后面的 .cs 代码更新此视图的 URL
webview1.Source = "http://www.microsoft.com"
我有第二个标签用于设置/附加信息。 在第二页上,我有一个按钮,单击该按钮时我想将第 1 页上的 Web 视图重置为新的 Url/更新源。
只是试图在第二页上引用它告诉我,由于保护级别,我不能,并且需要静态项目的对象引用。
更新:
public partial class launcher5Page : ContentPage
public launcher5Page()
InitializeComponent();
webview1.Source = "web address here";
public static bool changeURL(string urlString)
webview1.Source = urlString;
return true;
仍在获取 错误 CS0120:访问非静态成员需要对象引用
【问题讨论】:
只需在设置 webview 源的页面上创建一个公共方法(或属性),然后从您的其他页面调用它 您不能使用静态方法来修改类的特定实例 一个例子 sn-p 会很好,我正在兜圈子试图找到答案。 【参考方案1】:我建议使用MessagingCenter
来完成这样的工作。然后你可以这样做:
public partial class launcher5Page : ContentPage
public launcher5Page()
InitializeComponent();
webview1.Source = "web address here";
/* Normally you want to subscribe in OnAppearing and unsubscribe in OnDisappearing but since another page would call this, we need to stay subscribed */
MessagingCenter.Unsubscribe<string>(this, "ChangeWebViewKey");
MessagingCenter.Subscribe<string>(this, "ChangeWebViewKey", newWebViewUrl => Device.BeginInvokeOnMainThread(async () =>
webview1.Source = newWebViewUrl;
));
然后在您的其他页面上:
Xamarin.Forms.MessagingCenter.Send("https://www.google.com", "ChangeWebViewKey");
【讨论】:
【参考方案2】:您的changeURL
方法标记为static
,这意味着它不能使用未标记为静态的任何内容。 Learn more about what static means..
由于类launcher5Page
是一个部分类,可以想象在sn-p 中使用的webview1
变量是在类的不同部分中定义的。 webview1
被称为类 launcher5Page
的 member
,因为它是在任何方法之外和类内部定义的。
您的解决方案:从您的changeURL
方法中删除static
关键字,或将webview1
成员设为static
,以便static
等其他static
成员可以使用它。
public **partial** class launcher5Page : ContentPage
public launcher5Page()
InitializeComponent();
webview1.Source = "web address here";
public **static** bool changeURL(string urlString)
**webview1**.Source = urlString;
return true;
此外,所有这些都与 Xamarin 完全无关,除了 Xamarin 是一组用 c# 编写的库。你的问题完全在于你缺乏c#语言的知识。
【讨论】:
以上是关于Xamarin - 来自另一个页面/视图的 WebView 更新 URL的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin MVVM 从另一个页面删除 Listview 项目