public class SearchParametersModel : ViewModelBase
{
private string _fromDate;
public string FromDate
{
get { return _fromDate; }
set
{
_fromDate = value;
VerifyPropertyName("FromDate");
}
}
private string _toDate;
public string ToDate
{
get { return _toDate; }
set
{
_toDate = value;
VerifyPropertyName("ToDate");
}
}
private DateTime? _selectedFromdate;
public DateTime? SelectedFromDate
{
get { return _selectedFromdate; }
set
{
_selectedFromdate = value;
VerifyPropertyName("SelectedFromDate");
}
}
private DateTime? _selectedTodate;
public DateTime? SelectedToDate
{
get { return _selectedTodate; }
set
{
_selectedTodate = value;
VerifyPropertyName("SelectedToDate");
}
}
}
private void Clear()
{
try
{
SearchParametersMdl.ToDate = string.Empty;
SearchParametersMdl.FromDate = string.Empty;
SearchParametersMdl.SelectedFromDate = null;
SearchParametersMdl.SelectedToDate = null;
}
catch (Exception ex)
{
throw ex;
}
}
<DatePicker Height="25" HorizontalAlignment="Left" Margin="84,71,0,0"
Name="dtpFromDate" VerticalAlignment="Top" Width="115" Text="{Binding Path=
SearchParametersMdl.FromDate,Mode=TwoWay}" SelectedDate="{Binding
Path=SearchParametersMdl.SelectedFromDate,Mode=TwoWay}" />
<DatePicker Height="25" HorizontalAlignment="Right" Margin="0,70,481,0"
Name="dtpToDate" VerticalAlignment="Top" Width="115" Text="{Binding Path=
SearchParametersMdl.ToDate,Mode=TwoWay}" SelectedDate="{Binding
Path=SearchParametersMdl.SelectedToDate ,Mode=TwoWay}" />
无法清除datepicker控件中的值。
我想在触发clear cammand后显示默认值(即选择日期)。
答案 0 :(得分:0)
您应该删除可能搞乱绑定过程的Text
属性的绑定。 SelectedDate就足够了。
特别是当您绑定到字符串属性时,除非您在绑定中指定null
,否则绑定不知道要将TargetNullValue
转换为绑定的内容。
答案 1 :(得分:0)
我们可以使用转换器类清除日期:
在我的应用程序中,我使用波纹管转换器清除日期选择器值
请找到它可以帮助你的轰鸣声代码片段....
internal class DateConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
string date = ((DateTime)value).ToShortDateString();
if (!date.Equals("1/1/1753") && !date.Equals("1/1/0001"))
return ((DateTime)value).ToShortDateString();
return String.Empty;
}
/// <summary>
/// method for convert back
/// </summary>
/// <param name="value"></param>
/// <param name="targetType"></param>
/// <param name="parameter"></param>
/// <param name="culture"></param>
/// <returns></returns>
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
string strValue = value == null ? string.Empty : value.ToString();
DateTime resultDateTime;
if (!string.IsNullOrEmpty(strValue))
return DateTime.TryParse(strValue, out resultDateTime) ? resultDateTime : value;
else
return new DateTime(1753, 1, 1);
}
}
我正在使用此视图:
<UserControl.Resources>
<local:DateConverter x:Key="converter"/>
</UserControl.Resources>
这里是本地:转换器类的名称空间
<DatePicker x:Name="date_DueDate" FontSize="9" Visibility="{Binding IsDueDateVisible}" SelectedDate="{Binding *ViewModelProperty*, Converter={StaticResource converter}, NotifyOnTargetUpdated=True, NotifyOnSourceUpdated=True}" SelectedDateFormat="Short" Margin="5,5,0,0" VerticalAlignment="Top" MinWidth="100" MaxWidth="100" TabIndex="41"/>