0

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

<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 是这样的 Entity 对象

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

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

4

2 回答 2

1

您需要使 UDD 实现INotifyPropertyChanged。然后您需要更改 Start 和 EndDate 的设置器以调用 OnPropertyChanged。

另一件事是,在您的 XAML 中,它是 UDC,但在 C# 中,它是 UDD。我不知道这是帖子中的错字还是代码。

于 2013-10-07T20:18:05.270 回答
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" />
于 2013-10-08T12:41:49.750 回答