Как скрыть время от Datetime в Listview, если время 00:00 - PullRequest
0 голосов
/ 23 сентября 2018

Простой случай.У меня есть список с 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 содержит поле Datetime, называемое 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?

1 Ответ

0 голосов
/ 23 сентября 2018

Вы пробовали

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

Вы можете обратиться к этой странице документации для всех возможных значений StringFormat для DateTime .

Если вы все еще хотитескрыть время, когда его 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>
...