所以目前我正在学习WPF和MVVM,我在理解 DataContextDataBinding 时遇到了一些麻烦 . 我的问题是我不明白如何从后面的代码访问数据 .

这里详细说明我的问题就是一个例子:

假设我有一个应用程序,应该允许我将 Rectangles 放在 Canvas 上 . 该应用程序包含一个有3个子视图的窗口

  • Canvas 使用带有 ContentPresenterItemsControl 绘制 Rectangles

  • A View 显示参数(宽度,高度,X,Y)

  • A ListBox 向我展示了所有创建的矩形

我有一个 Rectangles 的ViewModel和一个_1123930_的MainViewModel,并保存当前选中的Rectangle .

三个 ViewsMainWindow 继承 DataContextMainViewModelDataContext . XAML 中的绑定值完全没有问题 .

但是,用户应该能够在 CanvasView 上拖动和调整矩形大小 . 为此,我将 MouseEvents 添加到 CanvasView.cs ,它识别我点击了一个矩形和 Adorner 以向用户显示他可以进行交互 .

Adorner 在单独的类文件中编码并处理调整大小操作 . 问题是,Adorner只是编辑了 ContentPresenter 项目 .

如何告诉背后的 Adorner 或任何其他代码,他们应该编辑 MainViewModelObservableCollection<Rectangles> 中的矩形? MouseEvent 只能检索 UIElementRectangleDataContext 所以我无法告诉我的 MainViewModel 当前选择了某个矩形 .

是否应该在 MainViewModel 中发生所有操作(即MouseEvent指向编辑内容的MainViewModel中的静态方法)?每次更改后是否需要'reload' MainViewModel 或者访问数据和编辑数据的理想方式是什么?

我希望这能解释我的问题 . 如果您需要进一步解释我的问题,请在下面发表评论 .