2009-01-25 16 views
18

यह महान काम करता है:कैसे सिल्वरलाइट DatePicker नियंत्रण में दिनांक स्वरूप बदलने के लिए?

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

लेकिन मैं तारीख स्वरूपित करना चाहते हैं कुछ इस तरह:

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

कोई भी इस के लिए वाक्यविन्यास पता है?

+0

क्या आपको केवल दिनांक पिकर के लिए एक अलग दिनांक प्रारूप की आवश्यकता है, या यह आपके पूरे एप्लिकेशन के लिए एक विशिष्ट दिनांक प्रारूप निर्धारित करने के लिए भी काम करेगा? उदाहरण के लिए दिनांक पिकर के लिए – ISW

+0

बस। –

उत्तर

28

दुर्भाग्य DatePicker नियंत्रण वर्तमान में नि: शुल्क दिनांक समय स्वरूपों का समर्थन नहीं करता है।

यह कुछ आप DatePicker के भविष्य के संस्करण में समर्थन को देखने में रुचि रखते हैं है, तो एक codeplex सुविधा का अनुरोध करता है कि पता चलता है बनाएं। http://silverlight.codeplex.com/WorkItem/Create.aspx

बस का कहना है कि नए Silverlight टूलकिट मार्च 2009 timepicker & TimeUpDown नियंत्रण भूमंडलीकरण विकल्पों में से एक पूरी श्रृंखला का समर्थन करते हैं। उनमें से एक में मुफ्त डेटटाइम प्रारूप शामिल हैं। तो यह सिर्फ सार्वजनिक रुचि का विषय है कि क्या हम उस पोर्ट को डेटपिकर पर वापस लेते हैं या नहीं। @ http://silverlight.codeplex.com/Wiki/View.aspx?title=Silverlight%20Toolkit%20Overview%20Part%201#TimePicker

Timepicker के लिए प्रारूप पर एक नज़र इस बीच है, सबसे अच्छा समाधान का या तो स्थानीय संस्कृति या स्वरूप बदलने के लिए स्थानीय संस्कृति पर है।

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

या स्थानीय संस्कृति पर प्रारूप बदलें।

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

वर्तमान संस्कृति को सेट करना बहुत अच्छा काम करता है - और आपको केवल अपने आवेदन के दौरान इसे करना होगा। – Calanus

0

सिल्वरलाइट DatePicker उस पर एक SelectedDateFormat संपत्ति है, तो यह आपके लिए क्या देख रहे हो सकता है।

1

आपको कस्टम नियंत्रण टेम्पलेट को परिभाषित करना चाहिए और टेक्स्ट प्रारूपित करने के लिए डेटपिकर नियंत्रण के टेक्स्टबॉक्स को संपादित करना चाहिए।

0

आप केवल नियंत्रण टेक्स्टबॉक्स (छोटी चौड़ाई के साथ) को छुपा सकते हैं, इसका खुलासा करें कि आप स्वयं हैं (वैकल्पिक रूप से गलत है IsEnabled को सेट करें) और एलिमेंट बाध्यकारी और कनवर्टर का उपयोग करें। यदि आप एमवीवीएम का उपयोग कर रहे हैं, तो DataContext को अपने ViewModel पर सेट करें। मुझे लगता है कि एक और विकल्प DataTemplate अधिलेखित करने के लिए पाठ बॉक्स को शामिल नहीं करने के लिए हो सकता है और एक ही विचार कर रहे हैं।

<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> 

अद्यतन: TwoWay दिनांक पिकर के पाठ बॉक्स से बाध्यकारी अच्छी तरह से काम करता है, लेकिन यह ViewModel संपत्ति अपडेट नहीं होता। तो मैं IsEnabled = गलत सेट करने जा रहा हूं और इसे अच्छा कहूंगा।

0

मैं इस एक जवाब सवाल यह है कि ध्यान दें।

लेकिन मैं हाल ही में सिल्वरलाइट 5 नियंत्रण टूलकिट में this link को सूचित करना चाहता हूं। इसमें (अन्य नियंत्रणों के बीच) डेटटाइमबॉक्स नियंत्रण होता है जिसमें आप एक ही नियंत्रण में दिनांक और समय दोनों को संभाल सकते हैं। इस बिंदु पर, यह अभी भी विकास में है, लेकिन यह ज्यादातर परिदृश्यों के लिए उपयोग योग्य होना चाहिए।

संबंधित मुद्दे