UpdateSourceTrigger = PropertyChanged仅适用于页面上的第一个DatePicker

时间:2013-10-07 19:35:20

标签: c# wpf mvvm datepicker

属性我正在使用WPF和MVVM,并在我的页面中有两个DatePicker,如下所示。UpdateSourceTrigger=PropertyChanged仅适用于第一个,当我更改第二个中的Date时,数据绑定到它不会改变。

<DatePicker Grid.Column="1" Height="25" Validation.ErrorTemplate="{x:Null}" Text="{Binding UDC.StartDate, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, StringFormat={}{0:dd/MM/yyyy}}" HorizontalAlignment="Left" Margin="22,90,0,0" Name="dtStartDate" VerticalAlignment="Top" Width="120" />
<DatePicker Grid.Column="1" Height="25" Validation.ErrorTemplate="{x:Null}" Text="{Binding UDC.EndDate, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, StringFormat={}{0:dd/MM/yyyy}}" HorizontalAlignment="Left" Margin="22,130,0,0" Name="dtEndDate" VerticalAlignment="Top" Width="120" />

我搜索了一个解决方案,但没有得到任何结果如何解决这个问题。

UDC是像这样的实体的对象

UDC
{
public int ID { get; set; }
public String Name { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
}

所有其他绑定工作正常,只有 EndDate 不会从视图中返回任何值。

2 个答案:

答案 0 :(得分:1)

您需要制作UDD实现INotifyPropertyChanged。然后,您需要更改Start和EndDate的setter以调用OnPropertyChanged。

另一件事是在你的XAML,它的UDC,但在C#,它的UDD。我不知道该帖子或代码中是否有拼写错误。

答案 1 :(得分:0)

其实我自己找到了答案。问题是我绑定了DatePicker的 Text 属性而不是 SelectedDate 。当我将我的Xaml文件更改为此时,一切正常。

<DatePicker Validation.ErrorTemplate="{x:Null}" Grid.Column="1" Height="25" SelectedDate="{Binding UDC.StartDate,ValidatesOnDataErrors=False, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, StringFormat={}{0:dd/MM/yyyy}}" HorizontalAlignment="Left" Margin="22,48,0,0" Name="dtStartDate" VerticalAlignment="Top" Width="120" />

<DatePicker Validation.ErrorTemplate="{x:Null}" Grid.Column="1" Height="25" SelectedDate="{Binding UDC.EndDate,ValidatesOnDataErrors=False, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, StringFormat={}{0:dd/MM/yyyy}}" HorizontalAlignment="Left" Margin="22,85,0,0" Name="dtEndDate" VerticalAlignment="Top" Width="120" />