【发布时间】:2012-09-16 07:06:46
【问题描述】:
我将 Galasoft 的 Light MVVM 用于我的 Siverlight 项目。
我已按照指示设置了所有内容:ViewModel 绑定到 View 的 DataContext;
我在View 中有一个名为inkCanvas 的画布。
当ViewModel获取更新的项目数据时,我需要引用inkCanvas创建一个CanvasRender实例public CanvasRender(Canvas canvas, ProjectData pdata)。
问题出在 MVVM 中,ViewModel 对View 一无所知,那么如何在View 中引用控件(inkCanvas)?
附: (已编辑):我所做的解决方法是:当我将项目数据传递给ViewModel 时,我也会从View 的代码隐藏中传递inkCanvas。嗯,现在我的代码隐藏不干净。
【问题讨论】:
-
理想情况下,您不必从视图模型中引用特定视图,实际上应该避免。我可以确切地问一下您打算如何处理视图模型中的画布吗?
-
@KodeKreachor,我需要在来自类库的
CanvasRender中使用它。 -
你打算如何处理 CanvasRender 方法中的画布?
-
@KodeKreachor,将所有项目数据渲染到画布上,
CanvasRender来自另一个类库。 -
@PeterLee 在我看来,您可以接受 Cybermaxs 的仅使用绑定的建议,但扩展
Canvas并将所有渲染代码放入扩展中。根据需要向 Canvas 扩展添加新的依赖属性。
标签: silverlight mvvm view viewmodel mvvm-light