我有一个控件: DailyHours。其中包含我创建的自定义TimeEdit控件的集合。每个控件都应该绑定到DailyHours视图模型类。相反,它会尝试在TimeEdit控件中查找我绑定到的值。
TimeEdit控件绑定的一个示例:
<bc:TimeEdit Time="{Binding CurrentOperatingHours.MondayClose}" ></bc:TimeEdit>
TimeEdit控件具有其自己的小时和分钟的内部值,这些值绑定到小时和分钟属性。因此,TimeEdit控件的DataContext就是它自身。
public TimeEdit()
{
InitializeComponent();
this.DataContext = this;
}
但是,这会导致DailyHours控件错误地绑定time值。它在TimeEdit控件中查找CurrentOperatingHours属性,而不是它自己的视图模型。
如何让TimeEdit控件与内部值正确绑定,而不干扰其父容器上的绑定?
发布于 2012-06-29 19:01:14
您可以使用两种方法:从您的用户控件中删除this.Datacontext = this;,并使用小时和分钟与ElementName的绑定(这是很好的实践!)或者在你的主视图中使用relativeSourceBinding (不好的做法)。
我回答了一个类似的问题here。
ps:用户控件永远不应该将datacontext设置为自己。这破坏了datacontext继承,这不是预期的行为。
发布于 2012-06-29 19:00:09
尝尝这个
Time="{Binding DataContext.CurrentOperatingHours.MondayClose, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}}">
我希望这能行得通。
https://stackoverflow.com/questions/11260319
复制相似问题