1

データグリッドがあります。そのアイテムソースはリストに設定されます。私の問題は、Iamが文字列フォーマットを適用できないことです。これは私が試したフォーマットです。私は何かが足りないのですか?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

あなたが正しくやろうとしていることを理解していれば、DateTimeオブジェクトを特定の形式で表示したいDataGrid列があります。通常、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 に答える