MVVMCross for Touch 支持双向绑定吗? (除了 UITextFields)

2024-04-09

我正在研究为什么我的 2 路绑定无法使用 MVVMCross 进行 iOS 开发。我正在使用 UITextViews 嵌入 tableView 的自定义单元格中。

我看过这个问题:

如何使用 mvvmcross 双向绑定到 UITextView 控件? https://stackoverflow.com/questions/15839310/how-do-i-do-two-way-binding-to-a-uitextview-control-using-mvvmcross

并且提到了 Vnext 中不支持与 UITextViews 的 2 路绑定,但它在 V3 (Hot Tuna) 中处于测试阶段。我正在使用 Hot Tuna,并获得了大约二进制文件。 6 月 12 日。

以下代码行是我绑定单元格的方式。

this.CreateBinding (_cells[2]).For (cll => cll.FieldDescription).To ((TimesheetViewModel vm) => vm.AccountID).Mode(MvxBindingMode.TwoWay).Apply ();

_cells[] 是自定义类单元格的数组

这是我的自定义单元格类中 FieldDescription 的属性:(FieldDescriptionLabel 是我的 UITextView)

    public string FieldDescription
    {
        get
        { 
            return FieldDescriptionLabel.Text;
        }
        set 
        {
            FieldDescriptionLabel.Text = value;
        }
    }

我的 UITextView 绑定一种方式;我确实看到了从 viewModel 填充的信息,但是当我更改 UITextView 中的某些内容时,ViewModel 不会反映这些更改。

所以主要问题是:2 路绑定适用于 MVVMCross Hot Tuna 中的 UITextView 吗?如果是的话,关于我在实施中做错了什么有什么想法吗?

欣赏它!


为了使双向绑定工作,mvvmcross 需要知道 ui 值何时发生变化。

有几种方法可以做到这一点。

考虑到您当前的设置,也许最简单的方法是添加public event EventHandler FieldDescriptionChanged到您的单元格并确保每次文本视图更改时都会触发此事件 - 例如与类似的代码。

public event EventHandler FieldDescriptionChanged;

public string FieldDescription
{
    get
    { 
        return FieldDescriptionLabel.Text;
    }
    set 
    {
        FieldDescriptionLabel.Text = value;
    }
}

public override void AwakeFromNib()
{
    base.AwakeFromNib();

    FieldDescriptionLabel.Changed += (s,e) => {
        var handler = FieldDescriptionChanged;
        if (handler != null) 
            handler(this, EventArgs.Empty);
    };
}

或者,您可以尝试将您的单元基于Mvx表格视图单元格具有固有的DataContext。如果这样做,那么您可以直接绑定到UITextViewwith 然后在单元格上下文中使用数据绑定。

这种方法在 N+1 教程中有所展示 - 例如 N=6.5 -http://slodge.blogspot.co.uk/2013/05/n6-books-over-network-n1-days-of.html http://slodge.blogspot.co.uk/2013/05/n6-books-over-network-n1-days-of.html- 单元格最终的构造函数如下:

public BookCell (IntPtr handle) : base (handle)
{
    _loader = new MvxImageViewLoader(() => MainImage);

    this.DelayBind(() => {
        var set = this.CreateBindingSet<BookCell, BookSearchItem> ();
        set.Bind(TitleLabel).To (item => item.volumeInfo.title);
        set.Bind (AuthorLabel).To (item => item.volumeInfo.authorSummary);
        set.Bind (_loader).To (item => item.volumeInfo.imageLinks.thumbnail); 
        set.Apply();
    });
}

使用这种方法,您只需要绑定单元格的数据上下文 - 例如就像是:

   this.CreateBinding (_cells[2]).For (cll => cll.DataContext).To ((TimesheetViewModel vm) => vm).TwoWay().Apply ();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MVVMCross for Touch 支持双向绑定吗? (除了 UITextFields) 的相关文章

  • MVVMCross 中的自定义插件

    我正在开发 MVVMCross v3 我想创建自己的插件 我遵循了本教程 适用于 vNext http slodge blogspot fr 2012 10 build new plugin for mvvmcrosss html 为了兼容
  • MvvmCross 无法在 iPhone 上为 EditingDidBegin 创建目标绑定

    我有一个绑定到 EditingDidBegin 的应用程序 它在 iPhone 模拟器 iOS 7 上运行良好 但在实际 iPhone 上运行时 我收到以下警告消息 MvxBind 警告 1 29 无法为 EditingDidBegin 创
  • 如何为 MvxItemTemplate 创建视图的操作侦听器

    我有一个包含 MvxListView 和表单的视图 我可以在视图代码中使用以下代码隐藏软键盘 因为这是纯粹的视图问题 var editText FindViewById
  • IMvxAndroidCurrentTopActivity 是单例吗?

    IMvxAndroidCurrentTopActivity可用于获取 MvvmCross Android 应用程序中当前的顶级活动 问题是 一旦顶级 Activity 发生变化 MvvmCross 是否会立即创建该接口的新实例 还是重用该接
  • MvvmCross Android - 按钮命令的relativesource绑定的替代方案

    I have a list of items bound to a MvxBindableListView with a MvxItemTemplate I usually have 4 items in my list bound to
  • 拍摄/选择图片并将其显示在 ImageView 中而不先保存(使用 MvvmCross)

    我想从库中选择一张图片或用相机拍照并将结果显示到视图 ImageView 但根据一些帖子 包括this one https stackoverflow com questions 13475896 need an example of ta
  • 从 Xamarin 可移植类库发送 Http 请求

    我在这个非常简单的任务上遇到了相当大的问题并寻求帮助 问题是 从 Xamarin PCL 执行超时的 Http 请求的最佳和最可靠的方法是什么 有几种选择 使用旧的 HttpWebRequest 这个解决方案肯定应该有效 但是我对这个问题中
  • MvvmCross Xamarin.Forms 模态对话框

    我只是想用 MvvmCross 制作我的第一个应用程序 但我的应用程序已经遇到了问题 并且在网络上找不到任何相关内容 我想在支持的设备 例如 iPad 上打开特定页面作为模式对话框 对于我的非 MvvmCross 应用程序 我使用 Rg P
  • ViewDidLoad 期间 ViewModel 为 null

    我正在开始在 iOS 中使用 MvvmCross public class MainView MvxTabBarViewController public override void ViewDidLoad base ViewDidLoad
  • 在 WP 上使用 MvvmCross 拍摄图像并显示图像时出现问题

    我想用相机拍照并将其显示在我所在的页面上 所以我有一个 ViewModel 我可以在其中拍照并显示它 public class CamViewModel MvxViewModel IMvxServiceConsumer
  • 对 Xamarin.iOS Storyboard 的 MVVMCross 支持

    由于支持即将制作稳定流的 iOS 故事板的 XS 集成 我希望能够将此功能与 MVVMCross 结合使用 从根本上来说 它似乎确实有点不应该工作 因为故事板指示视图项目中的导航层次结构 而不是像 MVVMCross 这样的视图模型项目 但
  • HttpClient - Xamarin Android - MvvmCross

    我一直在使用 Xamarin 和 MvvmCross 开发 Android 应用程序 一切都很顺利 我和我 的团队能够开发解决方案 本周我们决定进行最终调整并在其他环境中测试该应用程序 在测试过程中 我遇到了 Android 解决方案的巨大
  • Xamarin 在通知点击时形成打开视图模型

    我正在使用此代码在通知栏中显示通知 点击通知后 将启动主要活动 是否可以使用 MvvmCross 在 Xamarin 表单应用程序中启动视图模型而不是活动 Intent notificationIntent new Intent conte
  • mvvmcross 可扩展列表视图

    我只是想知道 ExpandableListViews 的功能或类似于 ExpandableListViews 的功能是否潜伏在 Mvvmmcross 框架内 或者这种类型的控件不适用于多平台要求 该功能位于http deapsquatter
  • MvvmCross iOS:如何绑定MapView Annotation跳转到另一个视图?

    当单击标注附件按钮时 如何绑定 MapView 的注释以切换到不同的视图 如何实现注释的 CalloutAccessoryControlTapped 方法 或者最好的方法是什么 这是我的代码 Register MapView public
  • 如何使用 MvvmCross 创建 MasterDetailPage?

    我正在尝试使用 MvvmCross 开发 Xamarin Forms 应用程序 并且我想使用汉堡菜单 MasterDetailPage 但我不知道该怎么做 我尝试了不同的方法 搜索教程和示例 但没有成功 谁能帮我 正如你在这里看到的Mvvm
  • 谁应该在 MvvmCross 中创建视图模型实例

    澄清一下 我知道 MvvmCross 在创建视图模型的位置和方式方面非常灵活 我的问题更多的是关于适当的关注点分离 以简化复杂的跨平台应用程序的设计 假设我们有一个包含客户列表和客户详细信息的应用程序 在 iPad 和 Surface 上
  • MvvmCross 中的异步初始化和属性已更改

    我在视图模型中有一些来自 Init 的异步调用 问题是有时异步调用会在 OnCreate 之前返回 并且 UI 中的属性不会更新 当我们必须初始化异步数据时 是否有适合这种情况的适当的异步 等待模型 伪代码 ViewModel public
  • 当我单击 GridView 项时返回 ImageView 实例

    当我点击GridView项时如何返回ImageView实例 我为 ItemClick 创建自定义绑定事件 public class ItemClickSquareBinding MvxBaseAndroidTargetBinding pri
  • MvvmCross 在 Xamarin Studio 中工作吗?

    我花了一段时间得到一个直接的答案 我做了很多搜索和阅读 并尝试了很多东西 有时听起来是可能的 有时听起来只有通过进行链接和其他操作才可能实现 这是我试图避免的事情 我是 PCL 的忠实粉丝 我使用 Visual Studio 2012 Xa

随机推荐