Caliburn.Micro是否支持设计时数据?

时间:2011-07-21 14:16:43

标签: silverlight-4.0 caliburn.micro design-time-data

Caliburn.Micro是否支持设计时数据? 我尝试了以下步骤; 我创建了一个简单的hello world程序。 ShellViewModel是从IShell派生的。通过运行示例程序,它确实在运行时显示hello word。由于视图模型是从IShell派生出来的,因此我创建了一个也从IShell派生出来的虚拟类,并将其用作设计时实例。

public class SampleShellViewModel:IShell
{

    #region IShell Members

    public string HelloWorld
    {
        get { return "Hello World"; }
    }

    #endregion
}

在视图中我添加了设计时间上下文

<UserControl x:Class="HelloWorld.ShellView"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
         mc:Ignorable="d"
         xmlns:sampleData="clr-namespace:HelloWorld"
         d:DesignHeight="287" d:DesignWidth="518"
         >

<Grid Background="White" d:DataContext="{d:DesignInstance sampleData:SampleShellViewModel, IsDesignTimeCreatable=True}">
    <TextBlock Name="HelloWorld"
               VerticalAlignment="Center"
               HorizontalAlignment="Center"
               FontSize="20" />
</Grid>

我有什么遗失的吗? 感谢

3 个答案:

答案 0 :(得分:4)

请看Derek Beattie的Example of Caliburn Micro design data.

答案 1 :(得分:2)

应用Bind.AtDesignTime应该可以解决问题。

<UserControl 
     xmlns:cal="http://www.caliburnproject.org"
     cal:Bind.AtDesignTime="True"
     >
    <!-- etc -->
</UserControl>

答案 2 :(得分:1)

引用Graeme的评论,因为它回答了我的问题。

  

好的,您的d:DataContext="blah...代码非常完美,您仍然需要Text={Binding HelloWorld}才能进行混合访问数据(Id完全隐藏在该部分上),Blend不会通过Caliburn约束生成器运行xaml 。它需要明确设置。

- Graeme Bradbury 7月22日15:14“