У меня иногда возникает эта проблема, и я использую несколько уродливую технику. Вместо привязки непосредственно к свойству я создаю два дополнительных свойства в модели.
//The data I want to bind to
public DateTime Something { get; set; }
//Two new properties
public DateTime SomethingDate { /*...*/ }
public DateTime SomethingTime { /*...*/ }
Секции get
каждого должны просто возвращать Something
. В разделах set
вы реализуете небольшую часть логики, чтобы гарантировать, что Something
всегда отражается точно.
public DateTime SomethingDate
{
get
{
return this.Something;
}
set
{
this.Something = value.Date.Add(this.Something.TimeOfDay);
}
}
public DateTime SomethingTime
{
get
{
return this.Something;
}
set
{
this.Something = this.Something.Date.Add(value.TimeOfDay);
}
}
Теперь ваше свойство Something
всегда будет правильно отражать соответствующую дату и время двух элементов управления, при этом обновляя значение только частью информации от каждого из нас, который нам небезразличен.