0

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

4

1 回答 1

1

假设您使用的是 MVVM 框架,例如 Caliburn.Micro,您可以像这样设置设计器数据上下文:

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 中绑定它(如果设计器数据上下文添加正确,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>
于 2013-05-31T16:31:25.780 回答