web-dev-qa-db-fra.com

WPF DatePicker, affiche la date d'aujourd'hui avec la liaison à la propriété

Ceci est un doublon possible de Définir la date par défaut du sélecteur de date WPF sur la date actuelle mais j'ai essayé le code de la question et cela ne fonctionne pas, espérons-le Il me manque quelque chose de simple

OK, comme l'indique la question, je souhaite afficher la date actuelle lorsque la vue se charge, cependant, j'ai la propriété SelectedDate liée à une de mes propriétés, et je ne pense pas que vous puissiez utiliser "Texte" parce que la propriété à laquelle je lie est une propriété DateTime. oui, je pourrais faire une conversion dans le modèle mais le XAML (je pense) devrait pouvoir le faire pour moi.

OK, je sais quel est le problème, la date sort "01/01/0001" car bien sûr, sa liaison à ma propriété est par défaut 01/01/0001, donc je suppose que je devrai faire du code C # dans ma propriété pour dire si son 01/01/0001, utilisez DateTime.Now et sinon, utilisez la propriété.

Le XAML

    <DatePicker HorizontalAlignment="Left" 
                DisplayDate="{x:Static System:DateTime.Now}"
                SelectedDate="{Binding AvailableFrom, Mode=TwoWay}"
                Margin="139,58,0,0" 
                VerticalAlignment="Top" 
                Width="120"/> 

Je suis heureux de supprimer cela après si les grands représentants pensent que c'est un doublon,

Ce que j'ai fait pour résoudre ...

     get
     {

         if (m_AvailableFrom == DateTime.MinValue)
             return DateTime.Now;

        return m_AvailableFrom;
     }

Vive l'aide

14
user3428422

Personnellement, je voudrais simplement assigner DateTime.Now à la propriété AvailableFrom dans le code ViewModel.

Si vous souhaitez utiliser XAML, une option consiste à faire de la propriété AvailableFrom un DateTime? (DateTime nullable) plutôt qu'un DateTime. La valeur par défaut est alors null plutôt que "01/01/0001".

Ensuite, dans votre XAML, vous pouvez utiliser

xmlns:System="clr-namespace:System;Assembly=mscorlib"

<DatePicker
    HorizontalAlignment="Left"
    SelectedDate="{Binding
        Path=AvailableFrom,
        Mode=TwoWay,
        TargetNullValue={x:Static System:DateTime.Now}}"
    Margin="139,58,0,0" 
    VerticalAlignment="Top" 
    Width="120" />

et l'interface utilisateur affichera la date actuelle chaque fois que AvailableFrom est nul.

28
Josh Graham

Le lien MSDN pour la propriété SelectedDate ci-dessous l'affiche comme nullable. Je pense qu'au lieu de renvoyer DateTime, renvoyez simplement null s'il n'est pas défini et je soupçonne que, comme les autres contrôles avec des champs nullables, il n'affichera simplement rien.

Lien MSDN DatePicker.SelectedDate

2
steviesama