如果时间为 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>
...达到这个结果:
- 时间为 00:00 -->
9.23.2018
- 时间不同时 -->
9.23.2018 11:00 AM
我想达到同样的效果,但没有部分日期。 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>
简单的案例。我有一个 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 时该怎么做?
你试过了吗
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>