如果时间为 00:00,如何在 Listview 的日期时间中隐藏时间

How to hide time from Datetime on Listview if time is 00:00

简单的案例。我有一个 ItemsSource="{Binding MyModelsList}" 的列表视图。 MyModelsList 是 MyModel 元素的列表:

public MyViewModel() {
    ...
    _myModelsList = // method that gets items from db
}

private ObservableCollection<MyModel> _myModelsList;
public ObservableCollection<MyModel> MyModelsList
{
    // get.. set..
}

... 并且 MyModel 包含一些名为 MyDate 的日期时间字段。当我以默认方式声明 MyDate 时...

<ListView ItemsSource="{Binding MyModelsList}">
    <...>
        <Label Content="{Binding MyDate}" />   
    </...>
</ListView>

...达到这个结果:

我想达到同样的效果,但没有部分日期。 XAML 有可能吗?我尝试了不同的 ContentStringFormat 但结果总是包含 00:00.

我知道当 MyDate 字段在 ViewModel 中单独声明时我该怎么做,但是当 ViewModel 中只有 MyList 声明并且它绑定到 Listview 时该怎么做?

你试过了吗

Content="{Binding MyDate, StringFormat=T}". 

您可以参考此文档页面,了解 DateTime.

的 StringFormat 的所有可能值

如果00:00还想隐藏时间,可以使用这样的触发器

                <Label>
                    <Label.Style>
                        <Style TargetType="{x:Type Label}">
                            <Setter Property="Content" Value="{Binding MyDate, StringFormat=T}"/>
                            <Style.Triggers>
                                <MultiDataTrigger>
                                    <MultiDataTrigger.Conditions>
                                        <Condition Binding="{Binding MyDate.Hour}" Value="0" />
                                        <Condition Binding="{Binding MyDate.Minute}" Value="0" />
                                        <Condition Binding="{Binding MyDate.Second}" Value="0" />
                                    </MultiDataTrigger.Conditions>
                                    <Setter Property="Content" Value=""/>
                                </MultiDataTrigger>
                            </Style.Triggers>

                        </Style>
                    </Label.Style>
                </Label>