简单的情况。我有一个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的Datetime字段。当我以默认方式声明MyDate时...
<ListView ItemsSource="{Binding MyModelsList}">
<...>
<Label Content="{Binding MyDate}" />
</...>
</ListView>
...实现此结果:
9.23.2018
9.23.2018 11:00 AM
我想达到同样的目的,但是没有任何时间。 XAML中可能吗?我尝试使用其他ContentStringFormat
,但结果始终包含00:00。
我知道在ViewModel中分别声明MyDate字段时该怎么办,但是在ViewModel中只有MyList声明并将其绑定到Listview时怎么办?
答案 0 :(得分:0)
您尝试过
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>