2009-01-25 46 views
18

này hoạt động tuyệt vời:Làm thế nào để thay đổi định dạng ngày trong điều khiển Silverlight DatePicker?

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

Nhưng tôi muốn để định dạng ngày, một cái gì đó như thế này:

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

Bất cứ ai cũng biết cú pháp cho việc này?

+0

Bạn có cần định dạng ngày khác cho chỉ bộ chọn ngày hay nó cũng hoạt động để đặt định dạng ngày cụ thể cho toàn bộ ứng dụng của bạn? – ISW

+0

Chỉ dành cho bộ chọn ngày chẳng hạn. –

Trả lời

28

Rất tiếc, điều khiển DatePicker hiện không hỗ trợ định dạng DateTime miễn phí.

Nếu đây là điều bạn quan tâm khi nhìn thấy sự hỗ trợ trong phiên bản tương lai của DatePicker, vui lòng tạo yêu cầu tính năng mã hóa cho thấy điều đó. http://silverlight.codeplex.com/WorkItem/Create.aspx

Chỉ cần chỉ ra rằng Bộ công cụ Silverlight mới tháng 3 năm 2009 TimePicker & Các điều khiển TimeUpDown hỗ trợ đầy đủ các tùy chọn toàn cầu hóa. Một trong số đó bao gồm các định dạng DateTime miễn phí. Vì vậy, nó chỉ là một vấn đề quan tâm của công chúng về việc có hay không chúng tôi cổng khả năng đó trở lại DatePicker. Hãy xem định dạng cho TimePicker @ http://silverlight.codeplex.com/Wiki/View.aspx?title=Silverlight%20Toolkit%20Overview%20Part%201#TimePicker

Trong khi đó, Cách giải quyết tốt nhất là thay đổi văn hóa địa phương hoặc định dạng văn hóa địa phương.

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

hoặc thay đổi định dạng văn hóa địa phương.

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

Đặt văn hóa hiện tại hoạt động tốt - và bạn chỉ phải thực hiện nó một lần trong suốt ứng dụng của mình. – Calanus

0

Silverlight DatePicker có Thuộc tính SelectedDateFormat trên đó, đây có thể là những gì bạn đang tìm kiếm.

1

Bạn nên xác định mẫu điều khiển tùy chỉnh và chỉnh sửa hộp văn bản của điều khiển datepicker để định dạng văn bản.

0

Bạn chỉ có thể ẩn hộp văn bản điều khiển (có chiều rộng nhỏ hơn), cho biết bạn đang sở hữu (tùy chọn đặt IsEnabled thành false) và sử dụng phần tử ràng buộc và chuyển đổi. Nếu bạn đang sử dụng MVVM, sau đó đặt DataContext thành ViewModel của bạn. Tôi cho rằng một tùy chọn khác sẽ là ghi đè lên DataTemplate để không bao gồm hộp văn bản và làm cùng một ý tưởng.

<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: Các TwoWay ràng buộc từ hộp văn bản để trình chọn ngày hoạt động tốt, nhưng nó không cập nhật các tài sản ViewModel. Vì vậy, tôi sẽ thiết lập IsEnabled = False và gọi nó là tốt.

0

Tôi nhận thấy đây là câu hỏi được trả lời.

Nhưng tôi muốn thông báo về this link cho bộ công cụ kiểm soát Silverlight 5 mà tôi vừa mới bắt đầu tạo. Nó chứa (trong số các điều khiển khác) một điều khiển DateTimeBox mà bạn có thể xử lý cả ngày tháng và thời gian trong cùng một điều khiển. Tại thời điểm này, nó vẫn đang được phát triển, nhưng nó có thể sử dụng được cho hầu hết các kịch bản.

Các vấn đề liên quan