我需要格式化布爾值作爲多語言支持「Ja」/「Nein」的字符串。女巫是我需要DisplayFormat和EditFormat的正確格式字符串嗎? 我使用DevExpress和repositoryItemTextEdit作爲設計中的列編輯器,但我認爲它與任何其他綁定字符串格式相同。還有另一種方法嗎?自定義字符串格式
Q
自定義字符串格式
1
A
回答
4
您應該將字面值「Ja」/「Nein」提取到本地化資源中。 老人作出了很好的迴應,但我會用一些例子來擴展它。
首先,定義自定義格式提供,將使用定位在某種
public class LocalizedBoolFormatter : IFormatProvider, ICustomFormatter
{
public string Format(string format, object arg, IFormatProvider formatProvider)
{
bool value = (bool)arg;
format = (format == null ? null : format.Trim().ToLower());
switch (format)
{
case "yn":
return GetLocalizedBool(value);
default:
return HandleDefaultFormat(arg, format, formatProvider);
}
}
public object GetFormat(Type formatType)
{
if (formatType == typeof(ICustomFormatter))
return this;
else
return null;
}
}
爲LocalizedBoolFormatter
私有方法可能如下:
private string HandleDefaultFormat(object value, string format, IFormatProvider formatProvider)
{
if (value is IFormattable)
return ((IFormattable)value).ToString(format, formatProvider);
else
return value.ToString();
}
private string GetLocalizedBool(bool value)
{
//extract from localization resources
//or use CultureInfo.CurrentCulture for poors man localization
return value ? "Ja" : "Nein";
}
然後,你可以簡單地使用自定義格式器格式值,其將由格式化器本地化
bool f = false;
string formatted = string.Format(new LocalizedBoolFormatter(), "{0:yn}", f);
Console.WriteLine (formatted);
W第i個DevExpress的RepositoryItemTextEdit可以使用Custom Formatting如下:
repositoryItemTextEdit.DisplayFormat.Format = new LocalizedBoolFormatter();
repositoryItemTextEdit.DisplayFormat.FormatType = FormatType.Custom;
3
布爾值不能自動轉換爲當前語言環境。你可以使用一個擴展方法將其轉化:
public static string ToPrettyString(this bool value) {
return value ? YourResource.TrueValue : YourResource.FalseValue;
}
如果您需要更多的靈活性,檢查答案Boolean Format String - Yes/No instead of True/False那裏,也可以實現IFormatProvider
的例子。
1
的easyest的方法是使用一個不同的屬性或列的格式化值。 您還可以使用數據綁定的分析/格式事件:
repositoryItemTextEdit1.DataBindings[0].Format += new ConvertEventHandler(repositoryItemTextEdit1_Format);
repositoryItemTextEdit1.DataBindings[0].Parse += new ConvertEventHandler(repositoryItemTextEdit1_Parse);
void repositoryItemTextEdit1_Format(object sender, ConvertEventArgs e)
{
return e.Value ? "Ja" : "Nein";
}
void repositoryItemTextEdit1_Parse(object sender, ConvertEventArgs e)
{
return e.Value.Equals("Ja") ? yes : no;
}
相關問題
- 1. 字典自定義字符串格式
- 2. 自定義字符串格式
- 3. 字符串格式自定義參數
- 4. Swift3從自定義格式字符串
- 5. 自定義PHP字符串格式
- 6. 自定義格式字符串
- 7. 格式字符串數組到自定義字符串
- 8. C#字符串字段的自定義顯示格式
- 9. 支護的ToString(字符串格式)與自定義數字型
- 10. python:字典到字符串,自定義格式?只有
- 11. 檢查自定義字符串模式
- 12. Excel自定義格式,檢查字符
- 13. 結合自定義數字格式字符串與十六進制格式字符串
- 14. C#中的自定義字符串格式化程序#
- 15. 自定義字符串格式:的ToString( 「00」)
- 16. 將自定義集合字符串轉換爲JSON格式
- 17. 時間戳與自定義格式的字符串
- 18. JavaScript字符串使用自定義格式
- 19. 自定義字符串格式0,0斜槓或反斜槓
- 20. Bukkit /插口HeroChat 5:在格式字符串自定義更換
- 21. 使用自定義格式序列化JSON字符串
- 22. Grails中的自定義字符串格式JSON編組
- 23. 對象列表的自定義字符串格式
- 24. 轉換自定義字符串,日期時間格式
- 25. 字符串格式自定義的方法擴展
- 26. 自定義格式字符串不顯示0
- 27. C#自定義OCR,返回一個格式化的字符串
- 28. WPF字符串格式使用自定義分隔
- 29. 如何使用字符串寫入自定義日期格式?
- 30. JAVA - 使用SimpleDateFormat格式化自定義字符串