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