2012-05-18 188 views
1

我現在正在使用WPF應用程序,在這裏我必須爲DateTime Picker編寫自己的自定義控件。 DateTime Picker沒有任何設置來設置userdefine日期格式。WPF自定義控件創建。?

什麼是這樣做這個..如果任何人有任何想法請幫助我。

謝謝 Arijit。


用戶定義的格式意味着.. 在我senarion我有一個配置文件,我有軸正數,其中日期時間將被displaied,我有一個下拉菜單,它會顯示在格式的當前日期是在一個配置文件中配置。現在對於每個座標軸,配置文件中的格式可能不同,在這個說明中,我希望日期選擇器應該填充當前選中軸的格式。

現在的問題是,我已經嘗試用下面的計算策略是什麼@Sebastian Edelmeier已經指出,但

CultureInfo ci = new CultureInfo(Thread.CurrentThread.CurrentCulture.Name); 
ci.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy"; 
ci.DateTimeFormat.DateSeparator = "/"; 
Thread.CurrentThread.CurrentCulture = ci; 

,我會改變的下拉的改變應用程序的文化,即方式是不可接受的。此外,控制是一個對話框,一旦當前線程更新,它不會恢復到我猜測的另一種文化。

我完全停留在時間點。

+0

你是什麼意思與「userdefined日期格式」?日期時間顯示的格式?我想這可以通過使用現有的DateTime選擇器添加的自定義控件模板來完成,例如,一個轉換器到輸出文本塊。 –

+0

Joachim你可以請給我看一個代碼,該控制模板將解決我的問題。請!..! – Arijit

回答

-1

如果你想要的所有功能,僅更改日期被描述的方式,你可以編輯您的CultureInfo:

CultureInfo ci = new CultureInfo(Thread.CurrentThread.CurrentCulture.Name); 
ci.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy"; 
ci.DateTimeFormat.DateSeparator = "/"; 
Thread.CurrentThread.CurrentCulture = ci; 

這應該做的伎倆。

+2

當一個簡單的ValueConverter可以做到這一點時,這看起來非常有創意。 – jjrdk

+0

請先生告訴我們ValueConverter如何做到這一點......他不想將日期轉換爲字符串或對其進行不同的處理,但只能改變它在控件中的描述方式...... –

+0

@ jjrdk和@SebastianEdelmeier我不想與字符串轉換接近,因爲我在本地化應用程序和改變位置,或者我們會發現不同的時間格式,這將創造我已經面臨的很多問題。 感謝你。 Arijit – Arijit

0

也許你可以在Binding中用StringFormat參數覆蓋DatePickerTextBox的ControlTemplate。例如

<Style TargetType="{x:Type DatePickerTextBox}"> 
    <Setter Property="Control.Template"> 
     <Setter.Value> 
      <ControlTemplate> 
       <TextBox x:Name="PART_TextBox" 
        Text="{Binding Path=SelectedDate, RelativeSource={RelativeSource AncestorType={x:Type DatePicker}}, StringFormat=\{0:f\}}" /> 
       </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

其中{0:f}是所需的字符串格式。或者,您可以使用自定義轉換器來獲取所需的格式。 我想這可能就足夠了,所以你不必爲整個日期選擇器覆蓋控件模板