2013-05-06 87 views
9

如何添加一個綁定格式,該格式與string.Format或類似的格式綁定值?我在其他線程看到,你可以傳遞一個converterName。MvvMCross與格式字符串綁定

  • 轉換器是否存在此問題?
  • 我在哪裏可以看到MvvMCross v3的標準轉換器列表?

我很快瀏覽了代碼,但找不到東西。我知道可能會發生信息丟失,破壞雙向綁定,但我只想要顯示值。 我的具體案例是DateTime的綁定。

bindings.Bind(purchaseDate).To(vm => vm.RegisteredDevice.PurchaseDate); 

我的心願例如爲:

bindings.Bind(purchaseDate).To(vm => vm.RegisteredDevice.PurchaseDate).WithFormat("hh:mm"); 

回答

17

要做到這一點,你可以創建一個StringFormatValueConverter,你可以使用它的參數作爲格式字符串使用。

大約需要2分鐘寫......在這裏,我會證明這一點:

public class StringFormatValueConverter : MvxValueConverter 
{ 
    public override object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     if (value == null) 
      return null; 

     if (parameter == null) 
      return value; 

     var format = "{0:" + parameter.ToString() + "}"; 

     return string.Format(format, value); 
    } 
} 

然後

set.Bind(myLabel).To(vm => vm.TheDate).WithConversion("StringFormat", "HH:MM:ss"); 

1分53秒;)

+0

感謝。我只是想確定,沒有實現一個轉換器。編寫我自己的轉換器將是我的下一步:)現在我可以打敗你的時間^^但有一個問題仍然是開放的:我在哪裏可以看到MvvMCross v3標準轉換器的列表? – 2013-05-06 16:37:06

+0

簡單的答案 - 目前,在一個標準的'HotTuna'應用程序有**沒有**(有些可以使用插件添加,一個目前要求多語言綁定) – Stuart 2013-05-07 06:39:46

+0

啊好吧,現在我知道爲什麼我不能找一個:)謝謝。 – 2013-05-07 06:53:29