4

WPF アプリケーションで、データグリッドにデータを表示します。このデータグリッドには、いくつかの DateTime 値があります。

DateTime が設定されていない場合、01/01/0001 が表示されます。DateTime は null 許容ではないため、問題ありません。

この場合、「 - 」を表示したいと思います。

コンバーターを使用する必要があると思います。

私はこれを試しました:

システムを使用する; System.Collections.Generic の使用; System.Linq を使用します。System.Text を使用します。System.Threading.Tasks の使用; System.Globalization の使用; System.Windows.Data を使用します。

namespace Phoenix_CRM
{
    public class Converter
    {
    }

    public class DateConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (value == null)
                return "--/--/----";

            DateTime returnVal;

            if (DateTime.TryParse(value.ToString(), out returnVal))
            {
                if (returnVal != DateTime.MinValue)
                    return returnVal;
                else
                    return "--/--/----";
            }
            else
                return "--/--/----";
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (value == null)
                return DateTime.MinValue;

            DateTime val;
            if (value.ToString() == "--/--/----")
                return DateTime.MinValue;

            if (DateTime.TryParse(value.ToString(), out val))
                return val;
            else
                return DateTime.MinValue;
        }

    }

}

これを XAML に追加しました:

xmlns:converter="clr-namespace:myNameSpace" 

後:

<DataGrid Grid.Column="0" Grid.Row="2">
    <DataGrid.Columns>
        <DataGridTextColumn Binding="{ Binding Path= dDate,StringFormat={}{0:dd/MM/yyyy HH:mm},Converter={converter:Converter.DateConverter}}" Header="  Date  " Width="Auto" IsReadOnly="True"  />
    </DataGrid.Columns>
</DataGrid>

私のコードはコンパイルされません。

Converter={converter:Converter.DateConverter}}

誰でも私を助けてくれますか?

4

2 に答える 2

3

コンバーターを使用するには、コンバーターをリソースとして定義し、そのリソースを使用する必要があります。

<Window.Resources>
    <converter:DateConverter x:Key="DateConverter" />
</Window.Resources>

使用法:

Converter={StaticResource DateConverter}

詳細については、このチュートリアルを参照してください。

于 2013-05-02T08:20:30.017 に答える
1
    <Window.Resources>
        <converter:DateConverter x:Key="DateConverter" />
    </Window.Resources>

    <DataGrid Grid.Column="0" Grid.Row="2">
        <DataGrid.Columns>
            <DataGridTextColumn Binding="{Binding Path= dDate,StringFormat={}{0:dd/MM/yyyy HH:mm},Converter={StaticResource DateConverter}}" Header="  Date  " Width="Auto" IsReadOnly="True"  />
        </DataGrid.Columns>
    </DataGrid>
于 2013-05-02T08:27:15.670 に答える