1

我正在尝试对示例项目 Cirrious.Conference 进行更改。特别是在 SessionView 类和这个类的 Touch View

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(在应用程序中)绑定 LoadRequest 与类 Session 的属性(假设有一个属性 URL ...)。我在 SessionView 中创建了一个 UIWebView 对象,但无法创建 Swisse 绑定...也许可以使用 customBinding...

我怎么能做到?

4

1 回答 1

8

由于UIWebView不公开 的属性LoadRequest,因此您不能直接绑定到它。

如果您想使用绑定LoadRequest,那么您可以使用以下 3 个选项:

  1. 继承MyWebViewUIWebView,添加一个驱动的 C# 属性,LoadRequest然后在您的 UI 中使用该类并在您的 Swiss 绑定中使用该属性 - 例如:

        [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. 如果这个属性永远不会改变,那么不要使用绑定,而是在你的 ViewDidLoad 中调用MvxViewControllerLoadRequest - 例如

         public void ViewDidLoad()
         {
             base.ViewDidLoad();
    
             var myViewModel = (MyViewModel)ViewModel;
             var url = myViewModel.Url;
             TheWebView.LoadRequest(url);
         }
    
于 2013-05-14T18:43:33.297 回答