gpt4 book ai didi

mvvm - MVVMCross 中动态绑定(bind) UIWebView

转载 作者:行者123 更新时间:2023-12-03 10:20:17 25 4
gpt4 key购买 nike

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

我怎么能做到?

最佳答案

由于UIWebView不公开 LoadRequest 的属性, 那么你不能直接绑定(bind)到它。

如果您想对 LoadRequest 使用绑定(bind),那么您可以使用 3 个选项:

  • 继承 MyWebView来自 UIWebView , 添加驱动 LoadRequest 的 C# 属性然后在您的 UI 中使用该类并在您的瑞士绑定(bind)中使用该属性 - 例如:
        [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!)
    }
    }
    }
  • 实现自定义目标瑞士绑定(bind)并将其添加到您的 Setup.cs。此 Custom Bindings 中描述了此过程。演示文稿 - 其中还包括一些示例的链接(其中一个在 session 应用程序中)
  • 如果这个属性永远不会改变,那么不要使用绑定(bind),而是在你的 MvxViewController 中调用 LoadRequest。 ViewDidLoad - 例如
         public void ViewDidLoad()
    {
    base.ViewDidLoad();

    var myViewModel = (MyViewModel)ViewModel;
    var url = myViewModel.Url;
    TheWebView.LoadRequest(url);
    }
  • 关于mvvm - MVVMCross 中动态绑定(bind) UIWebView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16548972/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com