SQL Server Compact +实体框架设计时间数据

时间:2013-05-31 15:25:18

标签: c# visual-studio-2012 sql-server-ce entity-framework-5 design-time

我有一个使用SQL CE和Entity Framework设计的应用程序。是否有一种实用的方法可以在设计时将数据提供给Visual Studio Express 2012 for Desktop中的数据绑定控件?

1 个答案:

答案 0 :(得分:1)

假设您使用的是MVVM框架,例如Caliburn.Micro,您可以设置设计器datacontext,如so

xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:vm="clr-namespace:CaliburnDesignTimeData.ViewModels"
xmlns:cal="clr-namespace:Caliburn.Micro;assembly=Caliburn.Micro"
mc:Ignorable="d" 
d:DataContext="{d:DesignInstance Type=vm:YourViewModel, IsDesignTimeCreatable=True}"
cal:Bind.AtDesignTime="True"

使用其他MVVM框架有类似的方法。

示例:

public class YourViewModel : PropertyChangedBase
{
    public BindableCollection<Employee> Employees { get; set; }

    public YourViewModel
    {
        Employees = new BindableCollection<Employee>();

        if(Execute.InDesignMode)
        {
            // Add an employee when in design mode, this data will show up in design time
            Employees.Add(new Employee 
            {
                Name = "Sample Data Employee"
            });
        }
    }
}

然后在XAML中绑定它(如果正确添加了设计器datacontext,VM的属性甚至会显示在Intellisense中):

<Window
    ...
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:vm="clr-namespace:CaliburnDesignTimeData.ViewModels"
    xmlns:cal="clr-namespace:Caliburn.Micro;assembly=Caliburn.Micro"
    mc:Ignorable="d" 
    d:DataContext="{d:DesignInstance Type=vm:YourViewModel, IsDesignTimeCreatable=True}"
    cal:Bind.AtDesignTime="True"
    >
    <Grid>
        <DataGrid
              AutoGenerateColumns="True"
              ItemsSource="{Binding Employes}" />
    </Grid> 
</Window>