当月份更改时,WPF DatePicker的集合访问器将被命中三次
我的视图中有两个日期选择器(Startdate和Enddate),它们绑定到DateTime类型的两个不同属性?在ViewModel中。我的视图模型中有一个验证,它总是检查Startdate是否小于EndDate 我的视图代码如下所示:当月份更改时,WPF DatePicker的集合访问器将被命中三次,wpf,xaml,datepicker,Wpf,Xaml,Datepicker,我的视图中有两个日期选择器(Startdate和Enddate),它们绑定到DateTime类型的两个不同属性?在ViewModel中。我的视图模型中有一个验证,它总是检查Startdate是否小于EndDate 我的视图代码如下所示: <DatePicker Style="{StaticResource DatePickerStyle}" Focusable="False" SelectedDate=
<DatePicker Style="{StaticResource DatePickerStyle}" Focusable="False"
SelectedDate="{Binding EViewModel.StartDate}"
x:Name="EStartDate"/>
<DatePicker Style="{StaticResource DatePickerStyle}" Focusable="False"
SelectedDate="{Binding EViewModel.EndDate}"
x:Name="EEndDate"/>
public static string StartandEndDateFieldValidator(object value, DateTime? startDate, DateTime? endDate)
{
string errorMsg = null;
if (value != null)
{
if (startDate > endDate)
{
errorMsg = DateErrorMessage;
MessageBox.Show(errorMsg);
}
}
return errorMsg;
}
我的问题是,当我选择“开始日期”为“今天”,打开“结束日期”下拉列表,并使用“月份导航器”按钮(下拉列表顶部月份左侧的箭头)选择“上一个月”时,上一个月的第一个被选为默认值,设置帐户或被调用三次,因此验证弹出窗口出现三次。在这种情况下,我必须点击Ok三次。我不明白为什么会这样
请帮我解决这个问题。这不是一个重复的例子。尝试了与您所做的相同的操作,仅当您选择日期时才为每个属性启动setter。你能提供更多这方面的信息吗?您是否在其他地方设置StartDate和EndDate?不,我实际上是直接将值设置到客户端模型,并从clientModel调用此验证器每次我设置日期时,都不会调用此验证器,因为集合本身不会被命中。