gpt4 book ai didi

xamarin.android - 如何在 Android 布局元素中绑定(bind)多个属性

转载 作者:行者123 更新时间:2023-12-04 18:21:02 27 4
gpt4 key购买 nike

我正在使用 MvvmCross 将我的 ViewModel 数据绑定(bind)到 Android View 布局。

从 SimpleBinding 示例中,我可以看到要将值绑定(bind)到属性,我这样做:

  <EditText
android:hint="Subtotal"
android:gravity="left"
android:inputType="numberDecimal"
android:maxLines="1"
android:numeric="decimal"
local:MvxBind="{'Text':{'Path':'SubTotal','Converter':'Float'}}"
/>

因此 Text 绑定(bind)到 ViewModel 的 SubTotal 属性。但是如何绑定(bind)多个属性?在我的例子中,我想将一个名为 HigherLower 的 ViewModel 属性绑定(bind)到布局元素的 TextColor 属性。我无法添加另一个 MvxBind,也无法将 MvxBind 设置为数组。

最佳答案

绑定(bind)表达式中使用的 JSON 格式是名为 MvxJsonBindingDescription 的字典。 s

public class MvxJsonBindingDescription
{
public string Path { get; set; }
public string Converter { get; set; }
public string ConverterParameter { get; set; }
public string FallbackValue { get; set; }
public MvxBindingMode Mode { get; set; }
}

这用于:
  • 字典键名是绑定(bind)的目标( View )属性。
  • 绑定(bind)Path属性是绑定(bind)的源 (DataContext) 属性 - 如果 Path未指定则整个 DataContext 本身就是绑定(bind)源。

  • 对于事件/ View 级别 axml,DataContext 是 ViewModel - 但对于 subview axml,则 DataContext 通常是 ViewModel 的子对象 - 例如在 ListView 内,DataContext 可能是 ViewModel 拥有的 List 或 ObservableCollection 内的项目。

    要指定多个绑定(bind),您可以使用 JSON,例如:
     {
    'TargetProperty1':{'Path':'SourceProperty1'},
    'TargetProperty2':{'Path':'SourceProperty2'}
    }

    对于您的特定示例,这可能是:
    local:MvxBind="
    {
    'Text':{'Path':'SubTotal','Converter':'Float'},
    'TextColor':{'Path':'HigherLower','Converter':'MyColorConverter'}
    }"

    您的 ViewModel 类似于:
    public class MyViewModel : IMvxViewModel
    {
    public float SubTotal { get; set; }

    public bool HigherLower { get; set; }

    // more code here
    }

    你的转换器是这样的:
    public class MyColorConverter : MvxBaseColorConverter
    {
    protected override MvxColor Convert(object value, object parameter, CultureInfo culture)
    {
    return ((bool)value) ? new MvxColor(255,0,0) : new MvxColor(0,255,0);
    }
    }

    以及在安装过程中初始化转换器的位置 - 例如看看 Converters 的属性如何类用于 TwitterSearch

    BestSellers 是显示多重绑定(bind)工作的一个示例 - 请参阅列表项 https://github.com/slodge/MvvmCross/blob/master/Sample%20-%20BestSellers/BestSellers/BestSellers.Droid/Resources/Layout/ListItem_Category.axml 中的单击和文本绑定(bind)。

    关于xamarin.android - 如何在 Android 布局元素中绑定(bind)多个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10688603/

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