2013-05-14 78 views
1

我试图对示例项目Cirrious.Conference进行更改。特别是在SessionView类的触摸视图,并在这个类的方法动态绑定MVVMCross中的UIWebView

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

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

我想去除隐藏一个UIWebView(在APP)与类的属性的loadRequest结合会话(假设有一个属性URL ...)。我已经在SessionView中创建了一个UIWebView对象,但是无法创建Swisse绑定...也许这可以使用customBinding ...

我怎么能做到这一点?

回答

5

由于UIWebView没有公开LoadRequest的属性,因此您无法直接绑定到它。

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

  1. 继承MyWebViewUIWebView,添加驱动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!) 
          } 
         } 
        } 
    
  2. 实现一个自定义的目标结合瑞士并将其添加到您的Setup.cs。这个过程描述在这个Custom Bindings演示文稿中 - 其中还包括一些示例的链接(其中一个在会议应用程序中)

  3. 如果此属性永远不会更改,则不要使用绑定,而只需调用LoadRequest在您的MvxViewController ViewDidLoad - 例如

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

没什么可说的!感谢上帝!! – 2013-05-15 07:04:10