Pergunta

Isso funciona muito bem:

<my:DatePicker IsTodayHighlighted="True" Width="200">
</my:DatePicker> 

Mas eu quero formatar a data, algo como isto:

<my:DatePicker IsTodayHighlighted="True" Width="200" Format="yyyy-mm-dd">
</my:DatePicker> 

Alguém sabe a sintaxe para isso?

Foi útil?

Solução

Infelizmente o controle DatePicker atualmente não suporta formatos de data e hora livres.

Se isto é algo que você está interessado em ver o apoio na versão futura do DatePicker, crie um pedido de recurso codeplex que sugere que. http://silverlight.codeplex.com/WorkItem/Create.aspx

Apenas para salientar que os novos TimePicker & TimeUpDown controles Silverlight Toolkit de Março de 2009 não suportar uma ampla gama de opções de globalização. Uma delas incluem formatos de data e hora livres. Por isso, é apenas uma questão de interesse público sobre se vamos ou não a porta que a capacidade de volta para DatePicker. Ter um olhar para o formato para TimePicker @ http://silverlight.codeplex.com /Wiki/View.aspx?title=Silverlight%20Toolkit%20Overview%20Part%201#TimePicker

Enquanto isso, A melhor solução, quer seja para mudar a cultura local ou o formato da cultura local.

    public App()
    {
        Thread.CurrentThread.CurrentCulture = new CultureInfo("nl-NL");

ou alterar o formato da cultura local.

        public App()
    {
        Thread.CurrentThread.CurrentCulture = (CultureInfo) Thread.CurrentThread.CurrentCulture.Clone();
        Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortDatePattern = "D/m/yyyy";

Outras dicas

Você deve definir um modelo de controle personalizado e editar a caixa de texto do controle datepicker para formatar o texto.

O Silverlight DatePicker tem uma propriedade SelectedDateFormat sobre ele, isso pode ser o que você está procurando.

Você pode apenas esconder a caixa de texto controles (com uma largura menor), expor você próprio (opcionalmente definir o IsEnabled para false) e usar um elemento de ligação e Converter. Se você estiver usando MVVM, em seguida, definir o DataContext para seu ViewModel. Suponho que outra opção seria a de substituir o DataTemplate para não incluir a caixa de texto e fazer a mesma idéia.

<StackPanel Orientation="Horizontal" Height="22">
      <TextBox x:Name="textBox2" Width="106" Text="{Binding ElementName=datePicker2, Path=SelectedDate, Mode=TwoWay, Converter={StaticResource internationalDateTimeFormatConverter}}" />
      <controls:DatePicker x:Name="datePicker2" IsTabStop="False" SelectedDate="{Binding TargetDatePicker, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true}" Width="23" HorizontalAlignment="Left" />
</StackPanel>

UPDATE: O TwoWay de ligação da caixa de texto para o selecionador de data funciona bem, mas não atualiza a propriedade ViewModel. Então, eu estou indo para definir o IsEnabled = False e chamá-lo bom.

Eu noto esta é uma pergunta respondida.

Mas eu gostaria de notificar sobre este link para um controle Silverlight 5 Toolkit Tenho recentemente começou a criar. Ele contém (entre outros controles) um controle DateTimeBox em que você pode lidar com ambos data e hora dentro do mesmo controle. Neste ponto, ele ainda está em desenvolvimento, mas deve ser utilizável para a maioria dos cenários.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top