/// <summary> /// Value converter to convert a datetime object to the specified string format. /// If the format is not specified, it will be converted to short date string "12/31/2011" /// </summary> [ValueConversion(typeof(DateTime), typeof(string))] public class CalendarConverter : IValueConverter { #region IValueConverter Members /// <summary> /// Implement the ConvertBack method of IValueConverter. Converts DateTime object to specified format /// </summary> /// <param name="value">The DateTime value we're converting</param> /// <param name="targetType">Not used</param> /// <param name="parameter">String format to convert to (optional)</param> /// <param name="culture">Not used</param> /// <returns>Collapsed if value is true, else Visible</returns> public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { DateTime date = (DateTime)value; string param = parameter as string; return string.IsNullOrEmpty(param) ? date.ToShortDateString() : date.ToString(param); } /// <summary> /// Implement the Convert method of IValueConverter. Converts a string representation of a date to DateTime /// </summary> /// <param name="value">The visibility value to convert to a boolean.</param> /// <param name="targetType">Not used</param> /// <param name="parameter">Not used</param> /// <param name="culture">Not used</param> /// <returns>false if Visible, else true</returns> public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { string dateString = (string)value; DateTime resultDateTime; if (DateTime.TryParse(dateString, out resultDateTime)) return resultDateTime; return DateTime.Now; } #endregion }
调用:
<!--TextBox自定义下拉日历--> <!--<TextBox x:Name="datePick" Text="Choose Date" VerticalContentAlignment="Center" Margin="34.4,12,162.4,18" Height="30" Foreground="#FF333333" Grid.Column="2" Grid.Row="0" VerticalAlignment="Center" Width="180" Grid.RowSpan="2" />-->