我希望这是有道理的。
我创建了几个WPF用户控件。最低级别的项目是“PostItNote.xaml”。接下来,我有一个'NotesGroup.xaml'文件,其中ItemsControl绑定到PostItNotes列表。在此之上,我有一个'ProgrammerControl.xaml'文件。每个ProgrammerControl都有一个网格,上面有四个不同的NotesGroup用户控件(每个NotesGroup包含0个PostItNotes。
然后,我有我的主窗口。它还有一个ItemsControl,绑定到程序员列表。
所以,你最终得到了一个程序员列表的高级视觉视图,每个程序员有四组票,每组票都有很多PostItNotes。
我遇到的麻烦是,我想在mainWindow的代码隐藏文件中回应鼠标点击事件。
我可以在我的PostItNote.xaml.vb文件中添加一个MouseClick事件,当用户点击PostItNote时会调用它,我可以重新提升事件;但我似乎无法让NotesGroup听取该事件。我不确定这是否是正确的方法。
当用户点击PostItNote时,我会做一堆业务逻辑类型的东西,PostItNote控件没有引用/不知道它。
有人能指出我正确的方向吗?
答案 0 :(得分:1)
您有几个选择:
答案 1 :(得分:1)
我打算在这里寄一张传单。您可能不想处理高涨的事件;不管怎么说。您正在较低级别捕捉此事件,这是不可避免的。考虑从PostItNote点击事件处理程序调用路由命令。
路由命令冒泡并向下穿过树。您可以拥有一个架构,其中高级处理程序可以侦听逻辑事件(也许打开一个便条笔记?)。这个处理程序不需要关心命令的来源。可能是您单击某个内容,可能是单击工具栏按钮。两者都是有效的方案。
听起来你正在创建某种自定义UI,对吗?您希望应用程序响应用户交互。这就是RoutedCommands
的用途。