2013-05-14 64 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