在xaml代码中,我收到错误,告诉无法创建实例 这个AllEmployeeViewModel类文件,当我输入scr时,实际上这个类文件存在于解决方案文件夹中:intellsene显示了我的类文件
<UserControl.Resources>
<scr:AllEmployeeViewModel x:Key="empName"></scr:AllEmployeeViewModel>
</UserControl.Resources>
<Grid x:Name="MainGrid" Background="White" Width="400"
Height="407" DataContext="{Binding Source={StaticResource empName}}" >
<Grid x:Name="grdAllEmp" DataContext="{Binding Path=EmployeeClass}">
<sdk:DataGrid AutoGenerateColumns="True" Height="274"
HorizontalAlignment="Left" Margin="8,8,0,0"
Name="dgEmployee" VerticalAlignment="Top" Width="385"
ItemsSource="{Binding}"/>
<Button Content="Get All Employees" Height="23"
HorizontalAlignment="Left" Margin="12,288,0,0"
Name="btnAllEmplloyees" VerticalAlignment="Top" Width="381"
Command="{Binding Path=DataContext.GetEmployees,ElementName=MainGrid}"/>
</Grid>
我正在尝试将数据绑定到网格,如果我忽略编译时错误并运行它会给出找不到的错误密钥。
如果你知道的话,请告诉我解决方案,从过去的2天开始解决这个问题
任何帮助都会很棒 感谢。
答案 0 :(得分:4)
我也有同样的问题。
cannot create instance of viewmodel
只需复制此代码并将其放在ViewModel
中public bool IsDesignTime
{
get
{
return (Application.Current == null) ||
(Application.Current.GetType() == typeof(Application));
}
}
//Constructor
public ViewModelClass()
{
if(IsDesignTime == false)
{
//Your Code
}
}
答案 1 :(得分:2)
只需在MainPage.xaml.cs页面中添加此行
即可InitializeComponent();
if (!System.ComponentModel.DesignerProperties.GetIsInDesignMode(this))
{
//Code that throws the exception
}
它工作正常。
答案 2 :(得分:0)
您的类AllEmployeeViewModel
是否具有零参数构造函数?但是,Silverlight无法创建您的类的实例。
答案 3 :(得分:0)
您与EmployeeClass
绑定。这必须是某种类型的集合才能使用,但名称EmployeeClass
听起来像是一个对象而不是集合。
你真的需要发布你的View Model代码,因为我们不得不猜测它。
我把一个快速示例放在一起,如果ViewModel包含:
public ObservableCollection<EmployeeClass> Employees { get; set; }
我用一些示例EmployeeClass对象填充它们,
public AllEmployeeViewModel()
{
this.Employees = new ObservableCollection<EmployeeClass>();
this.Employees.Add(new EmployeeClass() { Name = "One" });
this.Employees.Add(new EmployeeClass() { Name = "Two" });
我将绑定更改为:
<Grid x:Name="grdAllEmp" DataContext="{Binding Path=Employees}">
看起来像这样(没有其他变化):
答案 4 :(得分:0)
我得到了同样的错误,我会向你解释它,希望它会对你有所帮助。 在我的 ViewModel 的构造函数中,我执行了一些代码,所有代码都在 if 条件下,但
If(!IsInDesignMode) { // my code } // Problamatic method execution point
除了我想要每次执行的方法,但事实证明只有满足上述条件才能执行代码,否则将不会创建视图模型实例。
所以要避免这种情况,你必须这样做:
If(!IsInDesignMode) { // my code // Problamatic method execution point }
将所有代码置于该条件下,一切都会好的。
注意:我正在使用 MVVMLight库以及模型 - 视图 - ViweModel 模式。