1
在WPF中,我有一个带UserControl的ListBox作为它的ItemTemplate - 所有数据都显示ok。我现在在该用户控件中添加了一个用于输入的文本框。在MVVM设计中,当用户在列表框中的项目模板中编辑用户控件中的文本框的内容时,我想在主窗口中执行一些操作(重新计算值)。问题是 - 如何将该事件传播到模型?用户控件绑定到一个业务对象,我可以看到在那里改变了值(INotifyPropertyChanged在BO中实现),但是,如何将该事件提交给模型(而不是代码隐藏)呢? 任何例子或指针最受欢迎!来自UserControl的WPF ListBox中ItemTemplate的事件
雅
感谢您指点我到这些迄今尚未开发的地区。假设我要在用户控件中(在项目模板中的列表框中)实现一个带有ICommand的行为,我不太明白在列表框位于顶层的情况下,这将如何操作。或者,也许我的列表框/ itemtemplate/usercontrol /文本框层次结构有缺陷?感谢您的链接 - 一些更多的点击将是有益的。在foll链接的例子也很有用,行为似乎是正确的想法(参见http://codeblitz.wordpress.com/2009/07/01/wpf-editable-behavior-for-labels/) – jas 2009-12-05 12:41:11
这可以让您可能会将您的文本更改为ViewModel中的命令,从而允许您设置属性或引发可以传播链条的事件。另外,在重新阅读之后,我意识到您可能想要使用路由事件将事件从您的UserControl传播到更高级别的接口,从而可以以任何他们想要的方式处理它们。 (他们让你在视觉树中传播任意数量的“关卡”......) – 2009-12-05 20:19:53
事实证明,我通过简单的依赖属性实现了我想要的。在路线上,我有两个问题:DP不是两种方式,我没有绑定语法正确(什么工作:“{Binding Path = DataContext.MyValue,RelativeSource = {RelativeSource FindAncestor,AncestorType = {x:Type ListBox }},UpdateSourceTrigger = PropertyChanged}“)。感谢您的建议。 – jas 2009-12-06 20:59:48