gpt4 book ai didi

xamarin 表单与 mvvmcross 一起使用

转载 作者:行者123 更新时间:2023-12-04 21:13:59 24 4
gpt4 key购买 nike

是否有人有任何代码示例显示在同一个项目中同时使用 xamarin 表单和 mvvmcross View 的 IOS 和/或 Android native 应用程序?

我发现很多示例应用程序都有一个或另一个,但没有一个同时使用

例如,当我调用时在 ViewModel 中:

this.ShowViewModel<MyCustomViewModel>();

在我的 iOS 项目中,我希望能够创建 xamarin 表单 ContentPage 或 mvvmcross MvxViewController。

即在我的公共(public)项目中,我将同时拥有 XForm View ,对于 XForms 不够丰富的更复杂的 View ,我将拥有 mvvmcross View

任何代码示例或 github 项目都会很棒。我已经到处找了!

最佳答案

几个月前我也有同样的想法,因为我真的很喜欢 MvvmCross 概念,当然还有使用 XForms 实现统一 UI 的优势。

MvvmCross 非常适合使用通用逻辑(共享项目)构建应用程序,并在不同项目(iOS 和 Android)中拥有 UI。

但是,这不是必需的,因为所有 UI 都存储在一个共享项目中,并且可以使用 MvvmLight 轻松实现导航和所有其他 Mvvm 模式(查看 this post )。

如果您希望在特定平台中拥有不同的 UI,Xamarin 表单引入了一个名为 Renderers 的新概念。 - 您可以在其中调用 native UI 功能,就像在 XForms 之前在两个不同的 UI 组件中所做的那样。

Renderer 中的使用示例(取自 Xamarin 示例):

在您的共享项目中,您希望在 iOS 中有一个具有不同外观的自定义条目,然后您将创建此类:

public class MyEntry : Entry {}

在你的 iOS 代码中,你想做这样的事情:
[assembly: ExportRenderer (typeof (MyEntry), typeof (MyEntryRenderer))]
public class MyEntryRenderer : EntryRenderer
{
// Override the OnElementChanged method so we can tweak this renderer post-initial setup
protected override void OnElementChanged (ElementChangedEventArgs<Entry> e)
{
base.OnElementChanged (e);

if (Control != null) { // perform initial setup
// do whatever you want to the UITextField here!
Control.BackgroundColor = UIColor.LightGray;
Control.BorderStyle = UITextBorderStyle.Line;
}
}
}

在你熟悉了 Mvvm light 之后,你会看到 viewModel 之间的导航是由一个名为 INavigationService 的组件完成的。

这是我的应用程序的代码片段:
_navigationService.NavigateTo("UserDetailsPage", user);

I'm in a context of a view model, which represents a page that contains a users list, and when a specific user is selected, I'm calling to NavigationService, with the key 'UserDetailsPage', which is registered in the configuration for一个页面,它也接收一个参数“用户”。

我也想推荐 this video用于捕捉 MvvmLight 所提供的最佳效果。

关于xamarin 表单与 mvvmcross 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28800530/

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