首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >WPF MVVM控件不正确地共享ViewModel

WPF MVVM控件不正确地共享ViewModel
EN

Stack Overflow用户
提问于 2012-06-29 18:40:54
回答 2查看 232关注 0票数 0

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

TimeEdit控件绑定的一个示例:

代码语言:javascript
运行
复制
<bc:TimeEdit Time="{Binding CurrentOperatingHours.MondayClose}" ></bc:TimeEdit>

TimeEdit控件具有其自己的小时和分钟的内部值,这些值绑定到小时和分钟属性。因此,TimeEdit控件的DataContext就是它自身。

代码语言:javascript
运行
复制
public TimeEdit()
{
  InitializeComponent();
  this.DataContext = this;
}

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-29 19:01:14

您可以使用两种方法:从您的用户控件中删除this.Datacontext = this;,并使用小时和分钟与ElementName的绑定(这是很好的实践!)或者在你的主视图中使用relativeSourceBinding (不好的做法)。

我回答了一个类似的问题here

ps:用户控件永远不应该将datacontext设置为自己。这破坏了datacontext继承,这不是预期的行为。

票数 5
EN

Stack Overflow用户

发布于 2012-06-29 19:00:09

尝尝这个

代码语言:javascript
运行
复制
Time="{Binding DataContext.CurrentOperatingHours.MondayClose, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}}"> 

我希望这能行得通。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11260319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档