我有两个日期选择器。第一个datepicker设置第二个DisplayDate和DisplayDateStart。下面的代码设置DisplayDate和DisplayDateStart是正确的,我的问题是,当我选择第二个datepicker的日期时,它还会更新第一个datepicker选择日期。我可以问一下如何解决这个问题?
例如
DP1.SelectedDate = january 1 2017
如果我将DP2.SelectedDate更改为2017年2月3日,DP1.SelectedDate也会更改为。
<telerik:RadDatePicker SelectedDate="{Binding DisbursalDatePicker, Mode=TwoWay}"/>
<telerik:RadDatePicker DisplayDateStart="{Binding DisbursalDatePicker, Mode=TwoWay}"
DisplayDate="{Binding DisbursalDatePicker, Mode=TwoWay}"/>
我也尝试将DisplayDateStart和DisplayDate设置为OneWay但是DisplayDate无法正常工作,它显示DateTime.Now而不是显示DisbursalDatePicker。
我试图让帖子尽可能简单,所以任何人都可以测试它,但我相信这可能是Telerik控件的问题。只有telerik:RadDatePicker而不是wpf DatePicker
才会出现此问题答案 0 :(得分:0)
Mode=TwoWay
上{p> DatePicker.SelectedDate
是多余的;在创建依赖项属性时,框架使该属性成为绑定的默认值。
DatePicker.DisplayDate
似乎不太好:我通过实验找到的是,如果SelectedDate
为空,DisplayDate
将是最初突出显示的日期。日历弹出窗口。我可以看到它有用,但它并不是你想要的。 MSDN doesn't even admit to having a guess。 MSDN的WPF文档令人失望。
如果我理解你的要求,这是有效的:
<DatePicker
SelectedDate="{Binding DisbursalDatePicker}"/>
<DatePicker
DisplayDateStart="{Binding DisbursalDatePicker}"
SelectedDate="{Binding DisbursalDatePicker, Mode=OneWay}"
/>
当我更改第一个日期选择器时,它会在第二个日期选择器上更新DisplayDateStart
。第二次更新以在DisbursalDatePicker
更改时显示DisbursalDatePicker
,但在与其互动时不会更新DisbursalDatePicker
。
我不确定它有什么好处,因为视图模型无法从第二个DatePicker中获取值。如果是我,我有两个viewmodel属性:DisbursalDatePicker
和OtherDateValue
。当DisbursalDatePicker
更改时,OtherDateValue
的设置者会更新DisbursalDatePicker
,但反之亦然。
<DatePicker
SelectedDate="{Binding DisbursalDatePicker}"/>
<DatePicker
DisplayDateStart="{Binding DisbursalDatePicker}"
SelectedDate="{Binding OtherDateValue}"
/>
我可能会使DisbursalDatePicker
设置器变得更聪明:仅当OtherDateValue
的值变为无效时才更新OtherDateValue
:
private DateTime _disbursalDatePicker = default(DateTime);
public DateTime DisbursalDatePicker
{
get { return _disbursalDatePicker; }
set
{
if (value != _disbursalDatePicker)
{
_disbursalDatePicker = value;
if (OtherDateValue.CompareTo(DisbursalDatePicker) < 0)
{
OtherDateValue = DisbursalDatePicker;
}
OnPropertyChanged();
}
}
}