gpt4 book ai didi

xamarin.android - MVVM交叉-MvxBind : Combine/Concat Properties

转载 作者:行者123 更新时间:2023-12-04 16:04:33 25 4
gpt4 key购买 nike

我有一个小问题:

在我的 axml 设计器中,我有这样的东西:

<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
local:MvxBind="{'Text':{'Path':'FirstName'}}" />

这很好用,但我怎么能组合/连接 2 个属性(或更多)..

所以类似于:FirstName + SecondName(一个文本中有 2 个属性)

最佳答案

这是一个标准的 Mvvm 问题。我认为它在 Wpf 的早期出现了很多——我认为有很多关于多重依赖的想法……我还没有实现任何这些……

如果你想这样做,那么你可以使用:


(1) 在 ViewModel 对象上公开一个组合属性:

public string FullName
{
get
{
return FirstName + SecondName;
}
}

如果你这样做,那么你需要确保当你 RaisePropertyChanged("FirstName") 或 RaisePropertyChanged("SecondName") 时,你也 RaisePropertyChanged("FullName")


(2) 使用转换器将名称组合在一起:

<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
local:MvxBind="{'Text':{'Path':'','Converter':'MakeFullName'}}" />

请注意,这里的 Converter 将父对象作为其输入参数。

请注意,在这种情况下,如果 FirstName 或 SecondName 更改,则 TextView 可能不会更新:/


(3) 您可以在 UI 中使用多个 TextView - 每个都绑定(bind)到必要的文本位。


(4) 您可以使用单个 TextView 并使用 C# 级别绑定(bind) - 例如在 View 中使用如下代码:

   ViewModel.PropertyChanged += (s,e) => {
if (e.PropertyName == "FirstName" || e.PropertyName == "SecondName")
{
this.FindViewById<TextView>(Resource.Id.XXX).Text = ViewModel.FirstName + ViewModel.SecondName;
}
}

如果您认为多依赖绑定(bind)是一个重要的要求,请将此作为一个问题(功能请求)记录在 https://github.com/slodge/MvvmCross/issues 中。 - 或者甚至只是 fork 代码并添加它们:)

关于xamarin.android - MVVM交叉-MvxBind : Combine/Concat Properties,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13881073/

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