Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SQL Server Compact+;实体框架设计时数据_C#_Visual Studio 2012_Sql Server Ce_Entity Framework 5_Design Time - Fatal编程技术网

C# SQL Server Compact+;实体框架设计时数据

C# SQL Server Compact+;实体框架设计时数据,c#,visual-studio-2012,sql-server-ce,entity-framework-5,design-time,C#,Visual Studio 2012,Sql Server Ce,Entity Framework 5,Design Time,我有一个应用程序正在设计与SQL CE和实体框架。在Visual Studio Express 2012 for Desktop中,是否有一种实用的方法可以在设计时将这些数据提供给数据绑定控件?假设您使用的是Caliburn.Micro等MVVM框架,您可以将designer datacontext设置为: 使用其他MVVM框架也有类似的方法 例如: public class YourViewModel : PropertyChangedBase { public BindableCol

我有一个应用程序正在设计与SQL CE和实体框架。在Visual Studio Express 2012 for Desktop中,是否有一种实用的方法可以在设计时将这些数据提供给数据绑定控件?

假设您使用的是Caliburn.Micro等MVVM框架,您可以将designer datacontext设置为:

使用其他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"
            });
        }
    }
}
公共类YourViewModel:PropertyChangedBase
{
public BindableCollection雇员{get;set;}
公共视图模型
{
Employees=新的BindableCollection();
if(Execute.InDesignMode)
{
//在设计模式下添加员工时,此数据将在设计时显示
雇员。添加(新雇员)
{
Name=“示例数据员工”
});
}
}
}
然后在XAML中绑定它(如果设计器datacontext添加正确,VM的属性甚至会显示在Intellisense中):



我通常在项目中使用Caliburn.Micro,但为此我还没有添加任何框架。我注意到,当我将数据源绑定到列表时,它在窗口资源中创建了以下内容:添加IsDesignTimeCreatable=True似乎没有效果。我相信您使用VS/Blend绑定数据。尝试手动添加它,这样它就不会添加那些标记。我在我原来的帖子中添加了一些例子。很抱歉,我刚刚意识到你没有使用MVVM框架。您是否检查过设计时数据源中是否包含数据?是的,我有一个SQL CE数据库,其中包含一些记录。当应用程序运行时,一切正常。我正在用VisualStudio进行数据绑定,我不知道如何用数据库手动进行绑定。我请求这样做的主要原因是,当某些列表框为空时,有些字段会崩溃。如果我能在这种情况下切换到数据库的设计时连接,那就太好了。我有点困惑,你是在谈论设计时数据(一些数据显示在设计器中)还是在应用程序运行时显示一些虚假数据?如果是后者,你可以改变依赖关系,例如,你不用实际的EmployeeService,而是使用一个伪造的服务,它像FakeEmployeeService一样提供伪造的数据。
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"
            });
        }
    }
}
<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>