首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVVMCross - MvxBind:合并/合并属性

MVVMCross - MvxBind:合并/合并属性
EN

Stack Overflow用户
提问于 2012-12-14 14:58:25
回答 1查看 1.8K关注 0票数 3

我有个小问题:

在我的腋下设计师中,我有这样的东西:

代码语言:javascript
复制
<TextView
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  local:MvxBind="{'Text':{'Path':'FirstName'}}" />

这很好,但我如何组合/合并2个属性(甚至更多)。

比如:FirstName + SecondName (一个文本中有两个属性)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-14 15:21:47

这是一个标准的Mvvm问题。我想在Wpf的最初几年里,它出现了很多--我认为有很多关于多重依赖的想法.我还没有实现任何这些..。

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

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

代码语言:javascript
复制
public string FullName
{
    get
    {
        return FirstName + SecondName;
    }
}

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

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

代码语言:javascript
复制
<TextView
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  local:MvxBind="{'Text':{'Path':'','Converter':'MakeFullName'}}" />

注意,这里的转换器将父对象作为其输入参数。

请注意,在本例中,如果FirstName或SecondName更改,文本视图可能不会更新:/

(3)您可以在UI中使用多个TextViews --每个TextViews都绑定到所需的文本位。

(4)您可以使用单个文本视图并使用C#级别绑定,例如在视图中使用代码如下:

代码语言:javascript
复制
   ViewModel.PropertyChanged += (s,e) => {
      if (e.PropertyName == "FirstName" || e.PropertyName == "SecondName")
      {
          this.FindViewById<TextView>(Resource.Id.XXX).Text = ViewModel.FirstName + ViewModel.SecondName;
      }
   }

如果您认为多依赖绑定是一个重要的需求,请将其记录为https://github.com/slodge/MvvmCross/issues中的一个问题(特性请求)--甚至可能只是分叉代码并添加它们:)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13881073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档