Articles of mvvmcross

如何为`MvxLinearLayout`绑定到’ItemClick`?

我有一个ScrollView ,最初包含两个MvxListView控件。 Android不支持在ScrollView中使用ListView控件,这是有道理的,因为它们都试图填充父高度并提供自己的滚动逻辑。 我想要的是两个不可滚动的列表,它们在我的ScrollView的全高。 MvxListView扩展的ListView不支持此操作而不会手动破解高度。 我想要这个的原因是因为我有两个单独的列表,我必须将它们分开来源,它们都有自己的标题。 我需要在一个ScrollView可以滚动所有这些。 然后我find了MvxLinearLayout ,它是一个可绑定的LinearLayout ,它有一个我可以绑定的ItemSource属性。 它工作得很好,它显示我的项目并获得所有项目的全部高度,因此我可以滚动我的ScrollView两个列表。 问题是它似乎没有ItemClick属性,所以我没有办法从我的列表中获取用户输入。 有没有人知道以可绑定的方式做到这一点的干净方式? 我不想在后面的代码中附加onItemClick处理程序。 还有另一个MvvmCross控件可以做我想要的吗?

在启用链接器的情况下,将MvvmCross从4.2.3更新到4.4.0后,Android EditText绑定中断

由于MvvmCross从4.2.3更新到4.4.0,之前正在运行的MvvmCross Android应用程序已被破坏 public string Login { get { return _login; } set { SetProperty(ref _login, value); } } LinkerPleaseInclude当然: public void Include(EditText text) { text.Enabled = !text.Enabled; text.TextChanged += (sender, args) => text.Text = “” + text.Text; text.Hint = “” + text.Hint; text.Click += (s, e) => text.Visibility = text.Visibility – 1; } public void […]

MvvmCrosscheckbox绑定到命令android xml

是否可以绑定androidcheckbox以在更改时执行命令? 找不到一个例子

SqliteException忙着iOS / Android Xamarin MVVMCross

在我们的Android和iOS MVVMCross应用程序中,我们偶尔会遇到SQLiteException:繁忙的exception。 鉴于下面的代码,我们有几个存储库,每个存储库构造一个下面的实例和一个与Sqlite数据库的关联连接。 想象一下,我们有一个Stocks Repository和一个Valuations Repository,将创建两个SqliteDataService实例:SqliteDataServicetypes为Stocks,SqliteDataServicetypes为Valuations,每个都与Sqlite数据库有连接。 存储库上的操作可以在后台线程上运行,这意味着我们可能会尝试在与估值值同时将Stocks插入数据库。 现在,每个存储库创建自己的SqliteDataService,connectionObject锁将仅保护相同的存储库types同时访问数据库,而不是保护Stocks和Valuations同时访问数据库。 我的问题是: 每个存储库创建连接是否有效,如果是,我们如何防范SqliteException:busy? 有更好的模式吗? 即我们应该创建一个跨线程共享相同连接的非genericsSqliteDataService类吗? 我们尝试了这个,但在Android上我们遇到了致命的例外。 Xamarin MVVMCross有没有一个坚实的Sqlite DAL模式? public class SqliteDataService : IDataService where T : new() { private static object lockObject = new object(); private static object connectionObject = new object(); private static ISQLiteConnection _connection; private static SqliteDataService _instance; public SqliteDataService(ISQLiteConnectionFactory connectionFactory, string dbPath) { if […]

了解MvxCachingFragmentCompatActivity

我需要了解如何使用MvxCachingFragmentCompatActivity。 我在之前的问题之前已经问了这个问题,但我得到了一段示例代码,这有用但不是我需要的。 我需要的是了解如何使用它。 首先,我有一个活动,我的所有观点都是碎片。 我的重要假设是,如果我的活动被拆除并需要恢复,使用MvxCachingFragmentCompatActivity将使我能够恢复我的应用程序导航层次结构。 有人可以确认这是否正确。 如果这是正确的,我该如何使用它。 例如 我是否需要在视图模型中实现“保存和还原”状态? 开发人员还需要做什么吗? 对于缓存片段,MvxFragmentAttribute参数IsCacheableFragment实际上做了什么? 在恢复活动时,执行重新创建片段层次结构的操作是什么? 如果有关于此的一些文档会很棒。 我需要知道这一点,因为我的活动被拆除然后在我使用另一个活动进行相机function后恢复。 当Activity恢复自身时,我的片段的ViewModel为null。而且我发现Close(this)在我的视图模型中不起作用。 我确信我没有做我需要做的所有事情来完成这项工作,但我需要指导它应该如何使用。 任何帮助将不胜感激,也许是来自MvvmCross团队的人。 我真的被困在这里了。 我更喜欢描述行为,而不是指向一个样本,但两者都会很棒。 [ 更新 ]所以我构建了V4和V7 MvvmCross库的调试版本并设置了调试。 据我所知,只要你将以下属性添加到你的片段类中,就应该设置缓存你的片段。 [MvxFragment(typeof(MainActivityViewModel), Resource.Id.contentFrame, AddToBackStack = true, IsCacheableFragment = true)] [Register(“com.dummynamespace.MyFragment”)] 注意小写命名空间很重要,你的类名可以是大小写混合的。 但是,在我的活动被销毁并重新创建之后,我仍然会遇到问题。 就我而言,我实际上是在快速连续地看到我的活动被破坏并重建了不止一次。 一个例子是在活动销毁并重新创建后我无法关闭视图。 这似乎是由于GetFragmentInfoByTag(MvxCachingFragmentCompatActivity类)中的代码返回关闭视图所需的错误信息。 关闭function需要返回的IMvxCachedFragmentInfo中的ContentId,但是这会将其返回0.此外,AddToBackStack属性设置为false。 下面我列出了片段信息中返回的内容 AddToBackStack = false CacheFragment = true CachedFragment = null ContentId = 0 FragmentType = This […]

NotSupportedException无法激活JNI句柄 – MvvmCross

我最近在我的项目中将MvvmCross从3.5.1更新到4.1.4,并随之发布了应用更新。 在那之后,我从Xamarin Insights看到,很多用户体验过; Could not activate JNI Handle 0xffb35af8 (key_handle 0xe888654) of Java type ‘md53997af0c1a24144057e197743f9f827a/HomeView’ as managed type ‘package.name.HomeView’几乎所有活动及其各自的活动名称。 所有这些活动都是MvxActivities。 我的Setup.cs – public class Setup : MvxAndroidSetup { public Setup(Context applicationContext) : base(applicationContext) { } protected override IMvxApplication CreateApp() { return new MVVM.App(); } protected override IMvxTrace CreateDebugTrace() { return new MvxDebugTrace(); } protected override […]

如何使用MvvmCross流畅的API将RecyclerView项目的TextView绑定到Android上ViewModel的属性?

我在我的Xamarin Android项目中使用MvvmCross 。 我有一个MvxActivity与MvxRecyclerView ,我已在其布局文件中分配了一个项目模板。 ViewModel非常简单,它只包含一个属性,用于保存要在RecyclerView显示的数据: public class MainViewModel : MvxViewModel { private IEnumerable _viewModelItems; public IEnumerable ViewModelItems { get { return _viewModelItems; } set { SetProperty(ref _viewModelItems, value); } } } 通常,我喜欢尽可能多地使用MvvmCross流畅的API,因为隐式重构支持。 所以在我的活动中,我绑定了MvxRecyclerView的属性,如下所示: var recyclerView = View.FindViewById(Resource.Id.my_recycler_view); var set = this.CreateBindingSet(); set.Bind(recyclerView) .For(v => v.ItemsSource) .To(vm => vm.ViewModelItems); set.Apply(); 到现在为止还挺好。 现在,项目模板的布局文件基本上只包含一个TextView : 我的ViewModelItem类看起来像这样: public […]

Xamarin MvvmCross Android防止后退按钮返回上一个视图

我正在尝试为以下情况创建一个简洁的解决方案: 我已经构建了一个需要凭据来validation用户身份的应用程序。 每当API想要重新validation用户时,我都想强制用户返回登录视图。 此function很有用,但当用户按下设备上的后退按钮时,将显示上一个视图。 我想看到当用户按下后退按钮时,应用程序退出。 MvvmCross可以选择使用MvxPresentationHint 。 我创建了一个CustomAndroidViewPresenter并创建了以下MvxAndroidSetup: public class Setup : MvxAndroidSetup { private CustomAndroidViewPresenter _presenter; public Setup(Context applicationContext) : base(applicationContext) { _presenter = new CustomAndroidViewPresenter(applicationContext); } protected override IMvxAndroidViewPresenter CreateViewPresenter() { Mvx.RegisterSingleton(_presenter); return _presenter; } } 我知道你应该调用Finish(); 在一个活动上,以防止后退按钮导航回未经身份validation的视图。 但是转换applicationContext会抛出exception。 public CustomAndroidViewPresenter(Context context) { _context = context; } public override void ChangePresentation(MvxPresentationHint hint) { […]

在MvxFragment中关闭/隐藏Android软键盘

我用xamarin + mvvmcross创建android应用程序。 我的MvxFragment中有一个MvxAutoCompleteTextView。 在MvxAutoCompleteTextView中写入并单击其他控件后,我想隐藏虚拟键盘。 我用这个代码 public class MyFragment : MvxFragment { public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { base.OnCreateView(inflater, container, savedInstanceState); var view = this.BindingInflate(Resource.Layout.frMy, null); var autoComplete = view.FindViewById(Resource.Id.acMy); InputMethodManager inputManager = (InputMethodManager)inflater.Context.GetSystemService(Context.InputMethodService); inputManager.HideSoftInputFromWindow(autoComplete.WindowToken, HideSoftInputFlags.None); return view; } } 但这不行。 如何隐藏键盘?

MVVMCross在MvxBindableListView中更改ViewModel

我的Android应用程序的问题很小,我不知道如何使用MVVM Cross解决它。 这是我的模特 public class Article { string Label{ get; set; } string Remark { get; set; } } 我的ViewModel public class ArticleViewModel: MvxViewModel { public List Articles; …. } 我的layout.axml …… … 这就是我的问题,“article_rowlayout” … … 名为“MyTest”的“Click”命令链接在MvxBindableListView给出的项目上。 换句话说,单击在我的模型“文章”中搜索命令“MyTest”,而不是我的ViewModel。 如何更改该行为以链接我的ViewModel“ArticleViewModel”,它负责我的MvxBindableListView? 有什么建议么?