所以我的第一个选择是将formattedCurrency
道具作为一个通用功能:
public class LocalizedViewModel {
private IFormatProvider formatProvider;
public float Currency { get; set; }
public string FormattedCurrency () {
if (formatProvider.ToString().Equals("en-US"))
{
return (this.Currency < 0 ? this.Currency.ToString("C", formatProvider) : (this.Currency).ToString("C", formatProvider));
}
else
{
return (this.Currency < 0 ? "- " + Math.Abs(this.Currency).ToString("C", formatProvider) : (this.Currency).ToString("C", formatProvider));
}
}
public LocalizedViewModel () {
formatProvider = System.Globalization.CultureInfo.CurrentCulture;
}
}
然后从这个基本模型继承两个 ViewModel
public class MyModel1: LocalizedViewModel {
public MyModel1() : base() {
}
}
public class MyModel2: LocalizedViewModel {
public MyModel2() : base() {
}
}
然后每次创建对象时,您都可以访问此道具:
var myModel = new Model1();
var myModel2 = new Model2();
myModel.Currency = 100;
myModel2.Currency = 200;
现在,两个视图模型都将具有 formattedCurrency 以显示在任何视图上,而无需任何额外的视图逻辑。希望这对您有所帮助,并且可能是一个可行的选择。
myModel.FormattedCurrency();
myModel2.FormattedCurrency();
并在任何模板上呈现该属性。同样,这是实现相同结果的替代解决方案。但采用不同的方法。
问候