Windows Phone 7 开发积累_04
關于產生錯誤
“The as operator must be used with a reference type or nullable type ('System.DateTime' is a non-nullable value type)?”
?
今天寫數據轉換器,需要將按照時間值顯示不同的時間格式字符串。?
結果在Convert里發現這么寫報錯。
??????? public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
??????? {
??????????? DateTime time = value as DateTime;
??????? }
該問題是因為DateTime 為值類型,不能用引用類型或空類型。我們可以按如下方法寫這段代碼。
//DateTime?time?=?value?as?DateTime;? 這種寫法就不對 因為DateTime為值類型
//DateTime?time?=?value?as?DateTime?????_NullTime; 這種寫法雖然不報錯用起來也沒問題,不過也不合適
DateTime time = (DateTime)value;? //這種是正確寫法 多謝阿干童鞋指正
?
貼一下這個數據轉換器
需求:
綁定時間為當日的 只顯示“時:分”
綁定時間為當年且當日前的 顯示 “月-日 時:分”
綁定時間為往年的 顯示 “年份 月-日 時:分”
?
數據轉換器:
public?class?TimeFormatConverter:IValueConverter{private?static?DateTime?_Now?=?DateTime.Now;private?static?DateTime?_UndefineTime?=?new?DateTime(0);public?object?Convert(object?value,?Type?targetType,?object?parameter,?CultureInfo?culture){//DateTime?time?=?value?as?DateTime;//DateTime?time?=?value?as?DateTime?????_NullTime;DateTime?time?=?(DateTime)value;if?(time?==?_UndefineTime)return?"綁定時間有誤";int?offYear?=?_Now.Year?-?time.Year;int?offDay?=?_Now.Date.Subtract(time.Date).Days;if?(offYear?>=?1){return?string.Format("{0:yyyy-MM-dd?HH:mm}",?time);}else?if?(offDay?>=?1){return?string.Format("{0:MM-dd?HH:mm}",?time);}else{return?string.Format("{0:HH:mm}",?time);}}public?object?ConvertBack(object?value,?Type?targetType,?object?parameter,?CultureInfo?culture){throw?new?NotImplementedException();}}xaml中聲明集合
xmlns:Conv="clr-namespace:MyPageTabDemo.Utils.Converter"使用
<TextBlock?Text="{Binding?Timestamp,?Converter={StaticResource?TimeFmtConverter}}"?.../>轉載于:https://www.cnblogs.com/longlww/archive/2011/08/30/2159294.html
總結
以上是生活随笔為你收集整理的Windows Phone 7 开发积累_04的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jQuery新版本加载json注意事项。
- 下一篇: 使用tushare数据进行backtra