MVVMCross中的动态绑定UIWebView

MVVMCross中的动态绑定UIWebView,mvvm,binding,mvvmcross,Mvvm,Binding,Mvvmcross,我正在尝试对示例项目Cirrium.Conference进行更改。特别是在SessionView类和该类的触摸视图中 论方法 protected void NavigateToSession(Session session) { ShowViewModel<SessionViewModel>(new { key = session.Key }); } 受保护的无效导航会话(会话会话) { ShowViewModel(新的{key=session.key}); } 我想用类Se

我正在尝试对示例项目Cirrium.Conference进行更改。特别是在SessionView类和该类的触摸视图中

论方法

protected void NavigateToSession(Session session)
{
 ShowViewModel<SessionViewModel>(new { key = session.Key });
}
受保护的无效导航会话(会话会话)
{
ShowViewModel(新的{key=session.key});
}
我想用类Session的属性(假设有一个属性URL…)打开UIWebView(应用程序内)绑定LoadRequest。我已经在SessionView中创建了一个UIWebView对象,但是不可能创建Swisse绑定…也许可以使用customBinding


我该怎么做呢?

既然
UIWebView
没有公开
LoadRequest
的属性,那么您就不能直接绑定到它

如果要对
LoadRequest
使用绑定,则有3个可用选项:

  • UIWebView
    继承
    MyWebView
    ,添加一个驱动
    LoadRequest
    的C#属性,然后在UI中使用该类,并在瑞士绑定中使用该属性-例如:

        [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!)
                }
            }
        }
    
  • 实现自定义目标绑定并将其添加到Setup.cs。本演示中介绍了此过程,其中还包括一些示例的链接(其中一个示例位于会议应用程序中)

  • 如果此属性永远不会更改,则不要使用绑定,只需在
    MvxViewController
    ViewDidLoad中调用LoadRequest即可

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

  • 由于
    UIWebView
    不公开
    LoadRequest
    的属性,因此无法直接绑定到它

    如果要对
    LoadRequest
    使用绑定,则有3个可用选项:

  • UIWebView
    继承
    MyWebView
    ,添加一个驱动
    LoadRequest
    的C#属性,然后在UI中使用该类,并在瑞士绑定中使用该属性-例如:

        [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!)
                }
            }
        }
    
  • 实现自定义目标绑定并将其添加到Setup.cs。本演示中介绍了此过程,其中还包括一些示例的链接(其中一个示例位于会议应用程序中)

  • 如果此属性永远不会更改,则不要使用绑定,只需在
    MvxViewController
    ViewDidLoad中调用LoadRequest即可

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

  • 没什么好说的!感谢上帝!!没什么好说的!感谢上帝!!