silverlight - 如何解决引用 View 的控件

标签 silverlight mvvm view viewmodel mvvm-light

我正在为我的 Siverlight 项目使用 Galasoft 的 Light MVVM。

我已按照指示设置了所有内容:ViewModel绑定(bind)到 ViewDataContext ;

我有一个名为 inkCanvas 的 Canvas 在 View .

ViewModel获取更新的项目数据,需要引用inkCanvas创建 CanvasRender实例 public CanvasRender(Canvas canvas, ProjectData pdata) .

问题出在 MVVM 中,ViewModelView 一无所知,那么如何在 inkCanvas 中引用控件( View ) ?

附言(已编辑):我所做的解决方法是:当我将项目数据传递给 ViewModel ,我也传了inkCanvas来自 View的代码隐藏。嗯,现在我的代码隐藏不干净。

最佳答案

根据上面的评论,一种方法是扩展 Canvas并保留对 CanvasRender 的引用那个类(class)里面。

public class MyCanvas : Canvas
{
    private CanvasRender _canvasRender;
    private ProjectData _data;

    public ProjectData Data
    {
        get { return _data; }       
        set
        {
            _data = value;
            _canvasRender = new CanvasRender(this, _data);
        }
    }

    public MyCanvas() : base()
    {
    }
}

您可能还想制作 ProjectData一个依赖属性,以便它是可绑定(bind)的。

这允许您维护 MVVM 模式,因为现在您可以在 XAML 中编写:
<local:MyCanvas ProjectData="{Binding ViewModel.ProjectData}" />

关于silverlight - 如何解决引用 View 的控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12571529/

相关文章:

asp.net - Silverlight 或 ASP.NET

c# - 将数据从数据类传递到 View

wpf - 如何将顶级 MenuItem 上的 Visibility 属性绑定(bind)到 ViewModel

c# - MVVM:按钮保持事件命令

查看 Snowflake 中 CREATE VIEW 语句的 DDL 历史记录

view - Backbone.js - 从一个 View 绑定(bind)到另一个 View ?

C# 不安全的代码翻译?

c# - 您可以在 WP7 Mango 中添加对哪些 WCF 服务的服务引用?

wpf - Silverlight 不支持 XmlNode : re-implement or use string parsing?

android - 在图像上写文字,将带有文字的图像保存在 SD 卡中,而无需在屏幕上绘制