WPF MVVM控件错误地共享ViewModel

Tja*_*art 0 data-binding wpf mvvm

我有一个控件:DailyHours.它有我创建的自定义TimeEdit控件的集合.每个控件都应绑定到DailyHours视图模型类.相反,它试图在TimeEdit控件中找到我绑定的值.

TimeEdit控件绑定的示例:

<bc:TimeEdit Time="{Binding CurrentOperatingHours.MondayClose}" ></bc:TimeEdit>
Run Code Online (Sandbox Code Playgroud)

TimeEdit控件有自己的小时和分钟内部值,它们绑定到小时和分钟属性.因此,TimeEdit控件的DataContext本身就是.

public TimeEdit()
{
  InitializeComponent();
  this.DataContext = this;
}
Run Code Online (Sandbox Code Playgroud)

但是,这会导致DailyHours控件错误地绑定时间值.它在TimeEdit控件中查找CurrentOperatingHours属性,而不是自己的视图模型.

如何让我的TimeEdit控件正确绑定内部值而不会干扰其父容器上的绑定?

bli*_*eis 5

你可以采取两种方式:删除this.Datacontext = this; 来自您的usercontrol并使用ElementName for Hour and Minute(良好练习!)绑定或在Mainview中使用relativeSourceBinding(不良练习).

在这里回答了类似的问题.

ps:usercontrol永远不应该将datacontext设置为self.这会破坏datacontext继承,而不是预期的行为.