【问题标题】:How to hide time from Datetime on Listview if time is 00:00如果时间是 00:00,如何在 Listview 上隐藏日期时间的时间
【发布时间】:2018-09-23 19:55:32
【问题描述】:

简单的案例。我有一个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>

...实现这个结果:

  • 当时间是 00:00 --> 9.23.2018
  • 当时间不同时 --> 9.23.2018 11:00 AM

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

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

【问题讨论】:

    标签: c# wpf datetime data-binding string-formatting


    【解决方案1】:

    你试过了吗

    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>
    

    【讨论】:

    • 是的,我知道,但是如何在 00:00 时不显示?
    • 我用触发器编辑了我的响应,以在 00:00 时隐藏值
    • 如果它解决了您的问题或者您仍需要帮助,请告诉我!
    猜你喜欢
    • 2021-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多