Вот как вы можете обойти проблему:
1) Сохранить BorderBrush DatePicker's при запуске приложения
2) Привязать BorderBrush DatePicker к общедоступному свойству в модели представления (или к любому типу, назначенному для DataContext страницы)
3) Реализуйте событие SelectedDateChanged от DatePicker, в котором вы назначаете открытую (по умолчанию) или красную кисть общедоступному свойству, в зависимости от того, является ли значение SelectedDate для DatePicker нулевым или нет.
В SomePage.xaml:
<sdk:DatePicker Name="DatePicker"
BorderBrush="{Binding DatePickerBorderBrush, Mode=OneWay}"
SelectedDateChanged="SelectedDateChanged"
Width="120"
Height="22"/>
В SomePage.xaml.cs:
public partial class SomePage : UserControl, INotifyPropertyChanged
{
Brush defaultDatePickerBrush;
public Brush DatePickerBorderBrush
{
get
{
return (_DatePickerBorderBrush);
}
set
{
_DatePickerBorderBrush = value;
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("DatePickerBorderBrush"));
}
}
}
Brush _DatePickerBorderBrush;
public MainPage()
{
InitializeComponent();
defaultDatePickerBrush = DatePicker.BorderBrush;
DatePickerBorderBrush = new SolidColorBrush(Colors.Red);
DataContext = this;
}
private void SelectedDateChanged(object sender, SelectionChangedEventArgs e)
{
if (DatePicker.SelectedDate == null)
DatePickerBorderBrush = new SolidColorBrush(Colors.Red);
else
DatePickerBorderBrush = defaultDatePickerBrush;
}
public event PropertyChangedEventHandler PropertyChanged;
}