在MVVMCross动态绑定的UIWebView(Dynamic Binding UIWebView

2019-09-03 04:24发布

我试图做出改变,以示例项目Cirrious.Conference。 特别是在SessionView类的触摸视图,并在这个类

https://github.com/slodge/MvvmCross-Tutorials/blob/master/Sample%20-%20CirriousConference/Cirrious.Conference.Core/ViewModels/SessionLists/BaseSessionListViewModel.cs

在方法

protected void NavigateToSession(Session session)
{
 ShowViewModel<SessionViewModel>(new { key = session.Key });
}

我想去除隐藏一个UIWebView(在APP)与会话类的属性的loadRequest结合(假设有一个房产网址...)。 我已经创造了SessionView一个UIWebView对象,但它不可能创造一个Swisse绑定...也许这可能与customBinding ...

我怎么可能会做呢?

Answer 1:

由于UIWebView不公开为属性LoadRequest ,那么你就不能直接绑定到它。

如果你要使用绑定LoadRequest ,然后3提供给您的选项有:

  1. 继承MyWebViewUIWebView ,添加驱动器C#属性LoadRequest ,然后使用您的用户界面,类,并在您的瑞士绑定属性-例如:

      [Register("MyWebView")] public class MyWebView : UIWebView { public MyWebView() { } public MyWebView(IntPtr handle) : base(handle) { } private string _myUrl; public string MyUrl { get { return _myUrl; } set { if (_myUrl == value) return; _myUrl = value; LoadRequest(value); // or similar (I've not checked the syntax!) } } } 
  2. 实现一个自定义的目标结合瑞士并将其添加到您的Setup.cs。 这个过程在此被描述自定义绑定其中还包括一些实例链路(它们中的一个是在会议应用) -呈现

  3. 如果此属性不会改变,那么就不要使用绑定,而是只需调用中的loadRequest您MvxViewController viewDidLoad中-例如,

      public void ViewDidLoad() { base.ViewDidLoad(); var myViewModel = (MyViewModel)ViewModel; var url = myViewModel.Url; TheWebView.LoadRequest(url); } 


文章来源: Dynamic Binding UIWebView in MVVMCross