要件:ユーザーが######の形式で日付を入力できるようにすると同時に、DatePickerから日付を選択することもできます(入力するすべての年がPost 2000であると想定します)。たとえば、ユーザーが050513と入力すると、5/になります。 2013年5月。または、DatePickerから選択した場合は、同じ表示を提供します。また、コントロールがフォーカスを受け取ったときにすべてを選択して、既存の日付を簡単に上書きできるようにします。
私が試したこと:私のxamlは私のc#よりもはるかに強いので、私は創造性を発揮しようとしましたが、葉巻はありませんでした。RadMaskedTextBoxとRadDateTimePickerについて知っていることを活用できると思ったので、それらのプロパティを少し絡み合わせました(入力にはボックスを使用し、アイコンにはピッカーを使用できるという考えで)が、テスト目的では次のようになりました。
<StackPanel Grid.Column="2" Orientation="Horizontal" HorizontalAlignment="Center" >
<telerik:RadMaskedTextBox x:Name="radMTB"
Value="{Binding SelectedDate, Mode=TwoWay,
ElementName=radDP}"
MaskType="DateTime"
Mask="d" SelectionOnFocus="SelectAll" />
<telerik:RadDateTimePicker x:Name="radDP"
InputMode="DatePicker"
SelectedDate="{Binding SelectedDate, Mode=TwoWay, ElementName=radMTB}"/>
</StackPanel>
これは、日付全体をスラッシュで入力する必要があるという事実を除いて、うまく機能します。そこで、MaskTypeをMask = "## / ## / \ 2 \ 0 ##"でStandardに変更して、「20」を挿入し、121212のように入力して、2012年12月12日になりました。値をDatePickerに渡そうとするまで、私はそれを持っていたと思いました。ピッカーのSelectedDateをTextWithLiteralsにバインドして、表示値を取得しましたが、運が悪かったです。Display.Text、Display.Value、Textのみ、Valueのみを試しました。それらのいずれともバインドしてDatePickerに渡して機能させることはできません...
だから私の質問は、それでもどういうわけかそのリテラル表示にバインドして、xamlだけを使用してこれを機能させることができるかということだと思います。または、ParseDateTimeValueコードはRadDateTimePickerに必然的に必要ですか?もしそうなら、誰かがいくつかの知識を共有し、それで男を助けることができますか?それとも、求められている要件を満たすために一緒に別の方法がありますか?これが出てきたのはこれが初めてではありませんか?
どちらの方法でも読んでくれてありがとう!