开发者

Does Caliburn.Micro support design time data?

开发者 https://www.devze.com 2023-03-22 04:06 出处:网络
Does Caliburn.Micro support design time data? I tried out with following steps; I created a simple hello开发者_运维技巧 world program. Where ShellViewModel is derived off of IShell. By running the sa

Does Caliburn.Micro support design time data? I tried out with following steps; I created a simple hello开发者_运维技巧 world program. Where ShellViewModel is derived off of IShell. By running the sample program it does show hello word at run time. Since the view model is derived off of IShell I created a dummy class also derived off of IShell and used it as the design time instance.

public class SampleShellViewModel:IShell
{

    #region IShell Members

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

    #endregion
}

in the view I added the design time context as follows

<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>

Is there anything I a missing? Thanks


Please, look at Example of Caliburn Micro design data. by Derek Beattie.


Applying the Bind.AtDesignTime should do the trick.

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


Quoting Graeme's comment, since it answered my question.

Okay your d:DataContext="blah... code is perfect you still need Text={Binding HelloWorld} for blend to access the data (Id completely glossed over looking at that part), Blend doesn't run the xaml through the Caliburn convention binder. It needs to be explicitly set.

– Graeme Bradbury Jul 22 at 15:14"

0

精彩评论

暂无评论...
验证码 换一张
取 消