Why doesn't the PropertyChangedEvent get fired when I have an empty value for a DatePicker in Silverlight?
Here's my example 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 Behind:
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
    }
}
My Model Code (As you can see I tried Nullable<DateTime> and 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 Property开发者_开发技巧ChangedEventHandler PropertyChanged;
    private void NotifyPropertyChanged(string property)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(property));
        }
    }
}
shouldn't you be binding to the SelectedDate property of the DatePicker instead of Text?
The problem I was facing was the fact that ConvertBack was throwing an exception this is why PropertyChanged was never fired.
I also changed the Date control to bind to SelectedDate rather than Text as Mark Heath suggested.
Updated Xaml
<controls:DatePicker Height="20" Width="100"  x:Name="DatePicker" SelectedDate="{Binding Path=DOB, Mode=TwoWay, Converter={StaticResource DateConverter}}"/>
Here's my Converter...
public class DateConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        DateTime? result = null;
        DateTime result2;
        if (value != null)
        {
            if (!String.IsNullOrEmpty(value.ToString()))
            {
                if (DateTime.TryParse(value.ToString(), out result2))
                {
                    return result2;
                }
            }
        }
        return result;
    }
    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        DateTime? result = null;
        DateTime result2;
        if (value != null)
        {
            if (!String.IsNullOrEmpty(value.ToString()))
            {
                if (DateTime.TryParse(value.ToString(), out result2))
                {
                    return result2;
                }
            }
        }
        return result;
    }
}
 
         
                                         
                                         
                                         
                                        ![Interactive visualization of a graph in python [closed]](https://www.devze.com/res/2023/04-10/09/92d32fe8c0d22fb96bd6f6e8b7d1f457.gif) 
                                         
                                         
                                         
                                         加载中,请稍侯......
 加载中,请稍侯......
      
精彩评论