【问题标题】:MvvmCross Android Switch Compound Button BindabilityMvvmCross Android Switch 复合按钮可绑定性
【发布时间】:2013-09-05 21:34:09
【问题描述】:

在一个简单的 Monodroid/Mvvmcross 项目中,我的开关绑定不会触发,我必须使用解决方法来完成该行为。 我从一所大学听说,但无法找到 Monodroid 尚不正确支持开关的确认。因此我想知道这是否适用于 Mvvmcross 绑定。

MvvmCross 是否无法绑定到 Switch 复合按钮?

代码

SettingsView.axml

<FrameLayout [...]>
    <ScrollView [...]>
        <LinearLayout [...]>
            <Switch
                android:id="@+id/userSettingsView_Button"
                local:MvxBind="Checked ButtonChecked" />
        </LinearLayout>
    </ScrollView>
</FFrameLayout>

SettingsViewModel.cs

public class SettingsViewModel : MvxViewModel {
    [...]

    public bool ButtonChecked {
        get [...] set{[...]; RaisePropertyChanged(() => ButtonChecked);}
    }
}

我有一个版本,axml 对旧版 android 版本使用选中按钮,并且绑定 (/s/Switch/ToggleButton) 工作正常。 这个设置我得到一个 MvxBind 错误:6.07 View type not found - Switch。

【问题讨论】:

    标签: user-interface xamarin.android mvvmcross


    【解决方案1】:

    CompoundButton 与CheckedChange 的Checked 绑定是通过https://github.com/slodge/MvvmCross/blob/v3/Cirrious/Cirrious.MvvmCross.Binding.Droid/Target/MvxCompoundButtonCheckedTargetBinding.cs 实现的,这适用于从CompoundButton 继承的任何类

    如果您发现问题,则复制它并使用 Xamarin(对于 Xamarin 问题)或 MvvmCross(对于 MvvmCross 问题)记录它 - 但我不确定如果没有可重现的示例,任何人都能够提供帮助问题。

    【讨论】:

    • 我添加的代码是否足以更好地理解问题?现在很容易重现。
    • 已测试 - 绑定在 JellyBean 上工作正常。您的目标是 API 级别 >= 14?
    • 目标是 18。最低版本(我将它设置为 10,布局使用除了 v14+ 之外的切换按钮)会影响它吗?
    【解决方案2】:

    确保您在 LinkerPleaseInclude.cs 中添加了 Switch。 也许它会在绑定过程中被剥离..

    public void Include(Switch cb)
    {
      cb.CheckedChange += (sender, args) => cb.Checked = !cb.Checked;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-04
      相关资源
      最近更新 更多