Du kannst einen ValueConverter erstellen. Der DatePicker hat außerdem die Eigenschaft Text, also Datum in Text.
Hier mal ein (nicht ausgereiftes) Bsp. Es wird allerdings nicht der gewünschte Effekt erzielt, da der DatePicker INotifyPropertyChanged während der Eingabe anscheinend ignoriert. Es ist aber erstmal ein Anfang.
<Window x:Class="Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication1"
Title="Window1" Height="138" Width="233" _
xmlns:my="http://schemas.microsoft.com/wpf/2008/toolkit">
<Window.Resources>
<local:DateStringConverter _
x:Key="DateStringConv"></local:DateStringConverter>
</Window.Resources>
<Grid>
<my:DatePicker Text="{Binding TestDate, Mode=TwoWay," & _
"Converter={StaticResource DateStringConv}," & _
"RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type" & _
"Window}}}" Height="28" Margin="12,12,12,0" Name="DatePicker1" _
VerticalAlignment="Top" />
<Button Height="23" Name="Button1" VerticalAlignment="Bottom" _
Margin="71,0,65,12">Clear</Button>
</Grid>
</Window> Imports System.ComponentModel
Class Window1
Implements INotifyPropertyChanged
Public Event PropertyChanged(ByVal sender As Object, ByVal e As _
System.ComponentModel.PropertyChangedEventArgs) Implements _
System.ComponentModel.INotifyPropertyChanged.PropertyChanged
Private mTestDate As Date = Date.Now
Public Property TestDate() As Date
Get
Return mTestDate
End Get
Set(ByVal value As Date)
mTestDate = value
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs( _
"TestDate"))
Debug.WriteLine(value.ToShortDateString)
End Set
End Property
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
System.Windows.RoutedEventArgs) Handles Button1.Click
TestDate = #12:00:00 AM#
End Sub
End Class <ValueConversion(GetType(Date), GetType(String))> _
Public Class DateStringConverter
Implements IValueConverter
Public Function Convert(ByVal value As Object, ByVal targetType As _
System.Type, ByVal parameter As Object, ByVal culture As _
System.Globalization.CultureInfo) As Object Implements _
System.Windows.Data.IValueConverter.Convert
Try
Dim d As Date = CDate(value)
If d > #12:00:00 AM# Then
Return d.ToString
Else
Return ""
End If
Catch ex As Exception
Return ""
End Try
End Function
Public Function ConvertBack(ByVal value As Object, ByVal targetType As _
System.Type, ByVal parameter As Object, ByVal culture As _
System.Globalization.CultureInfo) As Object Implements _
System.Windows.Data.IValueConverter.ConvertBack
Dim d As Date
Date.TryParse(value.ToString, d)
Return d
End Function
End Class Maas
Beitrag wurde zuletzt am 20.11.09 um 14:06:36 editiert. |