Pourquoi le PropertyChangedEvent n'est-il pas déclenché lorsque j'ai une valeur vide pour un DatePicker
dans Silverlight?Valeur de liaison vide
Voici mon exemple XAML
<UserControl x:Class="ValidationExamples.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:ig="http://schemas.infragistics.com/xaml"
xmlns:controls='clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls'
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<Grid x:Name="LayoutRoot" Background="White">
<StackPanel>
<controls:DatePicker Height="20" Width="100" x:Name="DatePicker" SelectedDate="{Binding Path=DOB, Mode=TwoWay}"/>
<Button Height="20" Width="100" Click="Button_Click" Content="Break"/>
</StackPanel>
</Grid>
</UserControl>
code Derrière:
public partial class MainPage : UserControl
{
private Model MyModel;
public MainPage()
{
InitializeComponent();
this.MyModel = new Model();
this.MyModel.DOB = DateTime.Now;
this.DataContext = this.MyModel;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
// Empty on purpose
}
}
Mon Code modèle (Comme vous pouvez le voir, j'ai essayé Nullable<DateTime>
et DateTime
):
public class Model : INotifyPropertyChanged
{
private Nullable<DateTime> dob;
public Nullable<DateTime> DOB
{
get
{
return this.dob;
}
set
{
this.dob = value;
NotifyPropertyChanged("DOB");
}
}
//private DateTime dob;
//public DateTime DOB
//{
// get
// {
// return this.dob;
// }
// set
// {
// this.dob = value;
// NotifyPropertyChanged("DOB");
// }
//}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(string property)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(property));
}
}
}
Voici une implémentation légèrement différente - http://madprops.org/blog/a-nullable-datetime-ivalueconverter-and-validationrule/ –