什么取代了V3 Hot Tuna中的MvvmCross视图模型PropertyChanged事件

本文关键字:视图 MvvmCross 模型 PropertyChanged 事件 中的 Tuna 取代 V3 Hot 什么 | 更新日期: 2023-09-27 18:17:58

在使用V2之前,我使用视图代码中访问的事件处理程序(见下文)将内容加载到WebView中,因为我找不到通过xml绑定加载数据的方法。

    this.ViewModel.PropertyChanged += new PropertyChangedEventHandler(EventHandlerFoo);
    private void EventHandlerFoo(object sender, EventArgs e)
    {
       PropertyChangedEventArgs eventArgs = (PropertyChangedEventArgs) e;
       if (eventArgs.PropertyName == "Foo")
       {
           WebView webView = item.FindViewById<WebView>(Resource.Id.fooWebView);
           string body = item.FindViewById<TextView>(Resource.Id.fooUrl).Text;
           webView.LoadData(body, "text/html", "utf-8");
       }
    }

这在V3中不再可用,我一直无法找到替代品。是否有一个事件处理程序隐藏在热金枪鱼的深处,我可以使用或我将不得不实现自己的?

Thanks in advance

什么取代了V3 Hot Tuna中的MvvmCross视图模型PropertyChanged事件

PropertyChanged应该仍然在那里-它是INotifyPropertyChanged的一部分,并在整个MvvmCross中使用。

我现在在移动网络上,但我猜你现在没有看到它的原因是因为IMvxViewModel附加到你的MvxActivity不需要从INotifyPropertyChanged继承-见https://github.com/slodge/MvvmCross/blob/v3/Cirrious/Cirrious.MvvmCross/ViewModels/IMvxViewModel.cs

如果你想回到以前的功能,你有一个完整的强类型ViewModel,你可以使用(例如)

 public new MyViewModel ViewModel
 {
    get { return base.ViewModel as MyViewModel; }
    set { base.ViewModel = value; }
 }

或者你可以直接在你的代码中强制转换:

 ((MyViewModel)this.ViewModel).PropertyChanged += // ...

或者,如果你想为webview的url做一个完整的自定义绑定,参见:动态绑定UIWebView在MVVMCross (iOS代码-但Android版本类似)