在用户控件上动态选择矩形

ZgHrvoje

让我先说明问题。我想在Canvas周围实现包装器(我称其为Page),这将在其实际选择的UIElements周围实现选择矩形。为此,我实现了ISelect接口,如下所示:

interface ISelect {
  Point Center {get; set;} //Center of selecting rectangle
  Size Dimensions {get; set;} //Dimensions of selecting rectangle
}

放入Page的每个对象都实现ISelect接口。页面具有类型为ObservableCollection的SelectedElements,该元素保留对所有当前选定元素的引用。

对于SelectedElements中的每个条目,我想在其周围绘制一个矩形。

我不知道如何执行此操作:

  1. 每个UIElement都可以自己实现此矩形,并在选中时显示它。此选项将要求新的对象每次都执行此操作。所以我宁愿不使用它。
  2. 在Page中,我可以在代码中创建矩形,然后将它们添加到Page中。并非MVVM推荐的原则。
  3. 在Page XAML中,创建类似于ItemsControl之类的东西,并将其绑定到具有特定模板的SelectedElements。对我来说,此选项似乎是最好的选择。请朝这个方向帮助我。我应该以某种方式使用ItemsControl吗?

谢谢你。

辛纳特

我没有时间来寻找完整的工作解决方案,因此这主要是一些建议。

每个元素都应具有视图模型

public abstract class Element: INotifyPropertyChanged
{
    bool _isSelected;
    public bool IsSelected
    {
        get { return _isSelected; }
        set
        {
            _isSelected = value;
            OnPropertyChanged();
        }
    }
}

public class EllipseElement : Element {}
public class RectangleElement : Element {}

然后是用于可视化元素的数据模板(我无法为您提供转换器代码,但您可以将其替换为其他代码,请参见此处)。

    <DataTemplate DataType="{x:Type local:EllipseElement}">
        <Border Visibility="{Binding IsSelected, Converter={local:FalseToHiddenConverter}}">
            <Ellipse ... />
        </Border>
    </DataTemplate>
    <DataTemplate DataType="{x:Type local:RectangleElement}">
        <Border Visibility="{Binding IsSelected, Converter={local:FalseToHiddenConverter}}">
            <Rectangle ... />
        </Border>
    </DataTemplate>

然后将ObservableCollection元素绑定到画布(这很棘手,请参阅答案,该ItemsControl位置用于支持绑定)。

您的选择例程必须对元素进行命中测试并设置/重置其IsSelected属性,该属性将显示边框。有关如何绘制整体选择矩形的信息,请参见此处

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在用户控件上更改光标

来自分类Dev

在用户控件上更改光标

来自分类Dev

WPF:将焦点集中在用户控件的不同实例上

来自分类Dev

Bootstrap Modal无法在用户控件上运行

来自分类Dev

C#在用户控件上绘制链接标签

来自分类Dev

如何在用户控件上重定向事件

来自分类Dev

在用户控件上设置绑定到主窗口的ViewModel

来自分类Dev

如何在用户控件WinForm中访问托管表单上的控件

来自分类Dev

按钮单击事件未在用户控件中触发,而是在另一个用户控件中动态创建

来自分类Dev

AngularJS在用户选择上切换CSS主题

来自分类Dev

如何在用户在Android屏幕上绘制时绘制矩形

来自分类Dev

用户控件中的动态控件

来自分类Dev

动态添加用户控件

来自分类Dev

C#-在多个动态创建的用户控件上捕获事件

来自分类Dev

单击主窗体上的按钮时,在用户控件中隐藏面板

来自分类Dev

如何在用户控件上公开组合框数据绑定

来自分类Dev

使用VBA:在用户窗体上为标签控件分配值

来自分类Dev

如何禁用鼠标悬停在用户控件上的突出显示效果

来自分类Dev

在多选选择控件上显示动态工具提示

来自分类Dev

在多选选择控件上显示动态工具提示

来自分类Dev

在用户控件中处理对象?

来自分类Dev

BackgroundWorker不在用户控件内触发

来自分类Dev

在用户控件内部,获取元素值

来自分类Dev

在用户控件中的哪里清理?

来自分类Dev

在用户控件内设置Treeview的ItemTemplateSelector

来自分类Dev

在用户控件中使用FarPoint价差

来自分类Dev

在用户控件中定义命令绑定

来自分类Dev

在用户控件中包含CSS文件

来自分类Dev

在切换到另一个控件之前,如何将数据保存在用户控件上?

Related 相关文章

热门标签

归档