【发布时间】:2011-10-01 03:05:37
【问题描述】:
我正在制作一个 WPF 应用程序,我有一个用于数据编辑的 UserControl,里面还有几个 UserControls(超级简化版):
<UserControl x:Name="ParentControlView">
<DockPanel>
<!-- other various controls, textblocks, etc. -->
<Controls:DatePickerView DataContext="{Binding Path=EndDate, Mode=TwoWay}" />
<!-- other various controls, textblocks, etc. -->
</DockPanel>
</UserControl>
在父控件的 ViewModel 中,它有一个名为 EndDate 的子 DatePickerViewModel,它绑定到 DatePickerView 控件:
public class ParentControlViewModel : ViewModelBase
{
private DatePickerViewModel _endDate;
public DatePickerViewModel EndDate
{
get { return _endDate; }
set
{
_endDate = value;
RaisePropertyChanged(() => EndDate);
RaisePropertyChanged(() => SomeProperty);
}
}
}
DatePickerView 控件是一些绑定到DatePickerViewModel 中的属性的组合框,没什么特别的。
当我运行我的应用程序时,DatePickerView 被正确初始化并设置为当前值,就像它应该的那样。 所以get 方法工作正常。 但是当我更改DatePickerView 上的控件并且它的 ViewModel 得到更新时,绑定到父视图的值不会在父视图中设置模型(即set 方法永远不会运行)。
显然我错过了某种数据绑定连接,但对于我的一生,我无法弄清楚那是什么,我已经搜索了所有内容,但一无所获。
更新
Minimal working sample。包括我正在使用的大部分专有日期类,可能还有一些糟糕的 MVVM 实现。我还是 MVVM 的新手。我删掉了很多不必要的代码,所以日期选择器不能正常工作,但它可以满足这个问题的目的。
您需要获取并引用MvvmFoundation.Wpf.dll (at codeplex)。
【问题讨论】:
标签: c# wpf data-binding mvvm