我正在使用 Caliburn Micro 为我的应用程序创建一个 Visual Studio 风格的界面。
用户可能在多个窗口中出现多个错误,这些错误都显示在停靠在我的应用程序底部的“错误”视图中。我已经设法实现了一个很好的通知机制,以便在对任何文档进行更改时,通知错误 VM 并查询源对象。
但是,我在弄清楚如何双击以导航到错误源时遇到了麻烦。
想象一下,我已将“描述”绑定到文档视图上的文本框,这提供了“需要描述”验证消息。双击消息应该将用户导航到有问题的文档并关注文本框。
提供消息的验证对象已经包含对视图模型的引用(作为IViewAware
接口),它允许我调用GetView()
以获取对视图的引用。我已经尝试使用这种方法来枚举我的视图上的绑定并找到绑定到特定属性的控件,尽管这非常慢并且更多的是蛮力 - 运气好方法
有人对解决此问题的方法有任何建议吗?我唯一的另一个想法是将“焦点”操作的责任传递给视图本身,并决定如何处理导航到某个属性的请求 - 可能使用附加属性通过唯一属性标识符来识别特定控件。应用程序可以将此列表缓存在字典中以加快处理速度(在加载应用程序时预先完成所有处理)
我假设 Visual Studio 很容易为标准代码编辑器窗口实现这一点,因为它只需要一个行号就可以跳转到正确的位置。