我有一个显示类似于地理地图的视图,我UserControls
在这个视图中有一些视图,每个视图都显示有关 DataContext 的相关信息,但每个视图都从不同的角度来看,可以这么说。
然后,我的目标是将鼠标悬停在一个 UserControl 上,突出显示每个 UserControl 中的一个功能,当然这个突出显示的视觉风格将特定于每个 UserControl。
例如,如果我在地图中有一条路径,并且在图表中绘制了它的海拔剖面,我想将鼠标悬停在海拔剖面上,在该图形上动态显示一条垂直线,同时一些标记将是动态的显示在地图中,反之亦然。
我可以通过在视图本身中使用一些数值来做到这一点,这将是每个用户控件中的双向数据绑定,但存在一些概念问题:
- 经典数据绑定在 ViewModel 中预设了一个属性,但是“鼠标高亮”功能是特定于 View 的(它不代表对象状态),我绝对不希望将这样的属性添加到 ViewModel,这会污染它带有特定于视图的代码;
- 创建 UserControl 时,它们的 DataContext 是 ViewModel 或其某些属性。需要将部分 UserControl 的 DataContext 更改为不同的对象似乎不是一个建议或简单的方法。
- 我可以稍微破解一下并在具有折叠可见性的视图中创建一个
Slider
,并将 ElementBinding 与每个 UserControl 一起使用,但仍然如此,我将如何在视图和包含的 UserControl 之间进行 ElementBinding?
所以,主要问题是:
如何将视图中的单个属性(不是在 ViewModel 中!)绑定到给定视图中包含的许多用户控件?
如果一切都是一个单一的整体视图,那么使用 ElementBinding 对我来说是显而易见的选择,但是对于不同的类(一个视图和许多用户控件)我不知道如何进行 ElementBinding,或者即使它是正确的方法我想要的是。