在后面的代码中创建设计数据上下文

Posted

技术标签:

【中文标题】在后面的代码中创建设计数据上下文【英文标题】:Creating a design datacontext in code behind 【发布时间】:2012-02-17 18:04:09 【问题描述】:

我正在努力改进我在 Blend 中的设计时间体验。

我知道我可以这样做:

d:DataContext="d:DesignInstance local:vm_d, IsDesignTimeCreatable=True"

并且 blend/vs 将在设计时显示我与 vm_d 的绑定,但这似乎有些限制(即在使用 DI、泛型时,更不用说我必须手动编辑 XAML 以“改进我的设计时间经验”)。

我宁愿在后面的代码中做这样的事情:

public SimpleLoad()
    
        InitializeComponent();
        DataContext = new vm_d();
    

我假设一个问题是我需要设置 IsDesignTimeCreatable?无论如何,有人知道我该如何实现吗?

【问题讨论】:

【参考方案1】:

在构造函数(或 PageLoaded 处理程序)中添加一些内容:

        if (DesignerProperties.IsInDesignTool)
        
            SimpleLoad();
        

【讨论】:

我想也许我在原始帖子中并不清楚。在您的回答中,您建议在构造函数中调用 SimpleLoad,但 SimpleLoad 是我的构造函数。我的想法是我想在构造函数中有一些逻辑来确定(取决于我们是否处于设计模式)要创建哪个视图模型(真实的或仅在设计时使用的虚拟模型)。

以上是关于在后面的代码中创建设计数据上下文的主要内容,如果未能解决你的问题,请参考以下文章

在后面的代码中创建 DataTemplate

在后面的代码中创建样式

为啥java代码中创建的Android Button()必须使用(this)作为上下文?

如何在@TestFactory 的每个测试中创建不同的 Spring 上下文?

在 Qt 中创建原始 GL 上下文?

多上下文麻烦。无法在 Core Data 中创建两个队列(主队列和私有队列)保存数据