2012-12-10 40 views
1

我有一個數據網格。其項目源設置爲列表。我的問題是Iam無法應用字符串格式。這是我試過的格式。我錯過了一些事情嗎? 的StringFormat = 'MM/DD/YYYY' 的StringFormat = {0:DD-MMM-YYYY}無法在Silverlight DataGrid列中應用字符串格式

附帶產生的電網

     <sdk:DataGridTemplateColumn Header="Recieved Date" Width="Auto" > 
          <sdk:DataGridTemplateColumn.CellTemplate> 
           <DataTemplate> 
            <TextBlock Text="{Binding Path=RecievedDate, StringFormat=\{0:dd-MMM-yyyy\} }" /> 
           </DataTemplate> 
          </sdk:DataGridTemplateColumn.CellTemplate> 
          <sdk:DataGridTemplateColumn.CellEditingTemplate> 
           <DataTemplate> 
            <sdk:DatePicker Name="dtpFinancialAndComplianceLog" Text="{Binding Path=RecievedDate,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" /> 
           </DataTemplate> 
          </sdk:DataGridTemplateColumn.CellEditingTemplate> 
         </sdk:DataGridTemplateColumn> 

回答

5

如果我理解你想要什麼要正確地做,您有一個DataGrid列,您想要以特定格式顯示DateTime對象。通常一個DateTime對象會根據System.Threading.Thread.CurrentUICulture來整理自己的格式。我知道,迫使任何物體成一定的格式

最簡單方法是使用自定義的IValueConverter:

namespace MyProject.Converters 
{ 
    public class FormatConverter : IValueConverter 
    {//Suitable only for read-only data 

     public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
     { 
      if (value == null) 
       return string.Empty; 
      if(string.IsNullOrEmpty(parameter.ToString())) 
       return value.ToString(); 

      return string.Format(culture, parameter.ToString(), value); 
     } 

     public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
     { 
      return null; 
     } 
    } 
} 

添加命名空間到你的XAML後:在控制資源<conv:FormatConverter x:Key="Formatter" />xmlns:conv="clr-namespace:MyProject.Converters",並宣佈你的轉換器,您需要使用新的轉換器來綁定列數據:

<TextBlock Text="{Binding Path=RecievedDate, Converter={StaticResource Formatter}, ConverterParameter=\{0:dd-MMM-yyy\} }" /> 
+0

It Worked ..謝謝這麼詳細的步驟:) – Ananth