1

オブジェクトにGridViewいくつかの要素がバインドされています。私が働いている値は次のとおりです。

<GridViewColumn x:Name="DataGridLastEdit" Header="Last Edit" Width="150px" DisplayMemberBinding="{Binding lastEdit}" />

lastEditDateTimeタイプですが、一部の要素では空であり、1/1/0001 12:00:00 AM (コンピューターの時刻形式の設定に基づいて変更される可能性があります) と表示され、かなり醜い効果が得られます。

有効な日付を持たない要素に対してそれを非表示にしたいだけですが、私は XAML にかなり慣れていないため、それを行うことはできません。コンバーターの使用について読んだことがありますが、それを書いているといつもいくつかのエラーが発生し、それが機能するかどうかを試すことさえできません。

4

1 に答える 1

1

ValueConverterを使用します。

public class EmptyDateCoverter: IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if(value is DateTime)
        {
            if((DateTime)value == DateTime.MinValue)
            {
                 return "";
            }
        }
        return value;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        //We don't need convert back
        throw new NotImplementedException();
    }
}

たとえば、コントロールのリソースにコンバーターのリソースを作成します (conv は、コンバーターが定義されている名前空間のエイリアスです)。

<conv:EmptyDateCoverter x:Key="EmptyDate" />

次に、この方法でバインディングを適用します。

<GridViewColumn x:Name="DataGridLastEdit" Header="Last Edit" Width="150px" DisplayMemberBinding="{Binding lastEdit, Converter={StaticResource EmptyDate}}" />
于 2014-01-15T08:30:35.677 に答える