1

我有一个数据网格。其项目源设置为列表。我的问题是我无法应用字符串格式。这是我尝试过的格式。我错过了什么吗?StringFormat='MM/dd/yyyy' StringFormat={0:dd-MMM-yyyy}

附加生成的网格

                        <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>
4

1 回答 1

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:xmlns:conv="clr-namespace:MyProject.Converters"并在控件的资源中声明您的转换器后<conv:FormatConverter x:Key="Formatter" />,您需要使用新转换器绑定列的数据:

<TextBlock Text="{Binding Path=RecievedDate, Converter={StaticResource Formatter}, ConverterParameter=\{0:dd-MMM-yyy\} }" />
于 2012-12-12T05:15:41.677 回答