WPF中未指定Path或DataContext时如何实现字段绑定?
WPF无显式DataContext的绑定生效原理
你看到的这个绑定之所以能生效,核心原因是UI元素会自动继承父级可视化元素的DataContext,而这个View的最终DataContext是对应的MakeReservationViewModel实例,里面正好定义了Username属性。
具体拆解:
- WPF的DataContext具备向下继承性:如果父容器(比如UserControl、Window)设置了DataContext,其下所有子元素(包括这个TextBox)都会自动继承该DataContext,无需单独为每个子元素指定。
- 这个项目里,
MakeReservationView对应的ViewModel是MakeReservationViewModel,其中包含Username属性(且实现了INotifyPropertyChanged接口支持属性变更通知)。 - 绑定语法
{Binding Username}是{Binding Path=Username}的简写形式,当Binding未指定ElementName、Source等目标时,会自动使用当前元素的DataContext作为绑定源,查找对应的Username属性。
DataContext的设置方式大概率是以下之一:
- 在
MakeReservationView.xaml.cs的构造函数里直接赋值:DataContext = new MakeReservationViewModel(); - 通过MVVM框架的视图模型定位器自动关联View与ViewModel
- 在主窗口或导航容器加载该View时,为其设置对应的ViewModel作为DataContext
内容的提问来源于stack exchange,提问作者skm
相关产品推荐
相关产品推荐

