2012-12-14 34 views
3

我有一個小問題:MVVMCross - MvxBind:合併/ Concat的屬性

在我axml設計師,我有這樣的事情:

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

這工作正常,但我怎麼能結合/ CONCAT 2屬性(甚至更多)..

所以是這樣的: + SecondName2屬性在一個文本

回答

1

這是一個標準的Mvvm問題。我認爲它在Wpf的早年出現了很多 - 我認爲有很多關於多種依賴性的想法....我還沒有實現任何這些...

如果你想要做這一點,那麼你可以使用:


(1)視圖模型對象上提供一個綜合性能:

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'}}" /> 

注意,這裏轉換器採用父對象作爲輸入參數。

注意,在這種情況下,如果名字或SecondName改變,則文本視圖可能無法得到更新:/


(3),你可以在UI使用多個TextViews - 每一個綁定的必要一點文字。


(4)您可以使用單個文本視圖並使用C#級綁定 - 例如,在查看使用如下代碼:

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登錄這是一個問題(需求) - 或者甚至只是派生的代碼和添加他們:)