让我首先说明问题。我想实现Canvas的封装(让我称之为Page),它将实现围绕其实际选择的UIElements选择矩形。 为此,我实现I选择界面,如下所示:通过用户控件动态选择矩形
interface ISelect {
Point Center {get; set;} //Center of selecting rectangle
Size Dimensions {get; set;} //Dimensions of selecting rectangle
}
是放在页中的每个对象实现I选择界面。 页面包含ObservableCollection类型的SelectedElements,它保存对当前选定元素的引用。
对于SelectedElements中的每个条目,我想围绕它绘制矩形。
我有一些想法,如何做到这一点:
- 每天的UIElement可以自行实施该矩形选择时表现出来。这个选项需要每次都有新的对象来实现。所以我宁愿不使用它。
- 页面我可以在代码隐藏中创建矩形,并将它们添加到页面中。这不是MVVM推荐的原理。
- 在页面XAML创建类似ItemsControl的后台,并将其绑定到SelectedElements与特定的模板。这个选项对我来说似乎是最好的选择。请帮助我这个方向。我应该以某种方式使用ItemsControl?
谢谢。
搜索装饰物(可视化选择)。或者,如果您更喜欢单独选择,那么不必直接将视觉效果添加到'Canvas',而是将每个内部的'Border'(使用数据模板)放置在视觉的视图模型的IsSelected属性中。 – Sinatr
嗨。感谢您的快速响应。你有什么方法吗? – ZgHrvoje