C# “设计模式错误”;对象与目标类型“不匹配”;用于加载的页面资源
我目前正试图利用ViewModel的设计数据来模拟视图的数据。具体来说,我的silverlight应用程序有一个视图前端和一个ViewModel后端 当我模仿其他观点时,一切都很顺利。即使在这种特殊的观点下,唯一的问题似乎还是与收藏有关 你知道为什么我的“CategoryItem”在给“CategoryName”赋值时总是给我一个错误吗?我不知道是什么导致了这个问题 代码如下: 我的设计数据:C# “设计模式错误”;对象与目标类型“不匹配”;用于加载的页面资源,c#,wpf,visual-studio-2010,silverlight,design-data,C#,Wpf,Visual Studio 2010,Silverlight,Design Data,我目前正试图利用ViewModel的设计数据来模拟视图的数据。具体来说,我的silverlight应用程序有一个视图前端和一个ViewModel后端 当我模仿其他观点时,一切都很顺利。即使在这种特殊的观点下,唯一的问题似乎还是与收藏有关 你知道为什么我的“CategoryItem”在给“CategoryName”赋值时总是给我一个错误吗?我不知道是什么导致了这个问题 代码如下: 我的设计数据: <vm:MainPageViewModel xmlns:vm="clr-namespac
<vm:MainPageViewModel
xmlns:vm="clr-namespace:WebCatalog.ViewModels"
xmlns:m="clr-namespace:WebCatalog.Models"
SelectedTab="Category 1"
ProjectName="New Project Name"
ShowPopup="False"
IsBusy="False"
CurrentUser="Alex"
>
<vm:MainPageViewModel.Categories>
<m:CategoryItem CategoryName="test"/>
</vm:MainPageViewModel.Categories>
</vm:MainPageViewModel>
我的简化视图模型:
public class MainPageViewModel {
public string SelectedTab {get;set;}
public string ProjectName {get;set;}
public bool ShowPopup {get;set;}
public bool IsBusy {get;set;}
public string CurrentUser {get;set;}
public ObservableCollection<CategoryItem> Categories {get;private set;}
public MainPageViewModel()
{
Categories = new ObservableCollection<CategoryItem>();
}
}
public类MainPageViewModel{
公共字符串SelectedTab{get;set;}
公共字符串ProjectName{get;set;}
公共bool ShowPopup{get;set;}
公共bool正忙{get;set;}
公共字符串CurrentUser{get;set;}
公共可观测集合类别{get;private set;}
公共MainPageViewModel()
{
类别=新的ObservableCollection();
}
}
最后,我的(简化)观点:
米普
项目名称djfa;ldfj;lakdsjfladfjal;dfjaldfja
关于您的虚拟机更改
public ObservableCollection<CategoryItem> Categories {get;private set;}
公共可观测集合类别{get;private set;}
到
publicobservableCollection类别{get;set;}
否则,我的示例xaml绑定在设计模式下看起来和工作方式如下:
<local:MainVM x:Key="myMainVM">
<local:MainVM.Categories>
<local:CategoryItem Name="Test" />
</local:MainVM.Categories>
</local:MainVM>
虚拟机镜像了您的虚拟机(无专用集),虚拟机在Silverlight上以Xaml加载,并以设计模式显示数据
public class MainVM
{
public ObservableCollection<CategoryItem> Categories { get; set; }
public MainVM()
{
Categories = new ObservableCollection<CategoryItem>();
}
}
public class CategoryItem
{
public string Name { get; set; }
}
公共类MainVM
{
公共ObservableCollection类别{get;set;}
公共MainVM()
{
类别=新的ObservableCollection();
}
}
公共类类别项
{
公共字符串名称{get;set;}
}
关于您的虚拟机更改
public ObservableCollection<CategoryItem> Categories {get;private set;}
公共可观测集合类别{get;private set;}
到
publicobservableCollection类别{get;set;}
否则,我的示例xaml绑定在设计模式下看起来和工作方式如下:
<local:MainVM x:Key="myMainVM">
<local:MainVM.Categories>
<local:CategoryItem Name="Test" />
</local:MainVM.Categories>
</local:MainVM>
虚拟机镜像了您的虚拟机(无专用集),虚拟机在Silverlight上以Xaml加载,并以设计模式显示数据
public class MainVM
{
public ObservableCollection<CategoryItem> Categories { get; set; }
public MainVM()
{
Categories = new ObservableCollection<CategoryItem>();
}
}
public class CategoryItem
{
public string Name { get; set; }
}
公共类MainVM
{
公共ObservableCollection类别{get;set;}
公共MainVM()
{
类别=新的ObservableCollection();
}
}
公共类类别项
{
公共字符串名称{get;set;}
}
谢谢OmegaMan,不幸的是这不起作用(我之前已经试过了)。我的DesignData xaml中仍然出现“对象与目标类型不匹配”的错误。如果我没有任何“CategoryItem”,它工作正常,它只是不想向集合中添加任何项目。。。还有其他想法吗?@Aerophilic可能会创建一个简化的测试程序……这样做可能会让你发现最终的区别。如前所述,我的上述基础工作。GL@AerophilicCategoryItem
是公共类吗?是的。。。我用一个不同的视图使用它,所以我正在简化我的主窗口视图,以找出罪魁祸首。我怀疑有一些财产正在使用一项令人头痛的服务……好吧,我想出来了。显然,当您将非本地引用作为属性时,DesignData会呕吐。在我的具体案例中,我公开了一个“WebClient”作为属性。我仍然不知道为什么会出现问题,所以如果有人能告诉我原因,你会得到我对这个解决方案的“回答”。如果我有时间的话,我会更新这个问题,让它更具体地说明什么是真正的错误。感谢OmegaMan,不幸的是,这不起作用(我之前已经试过了)。我的DesignData xaml中仍然出现“对象与目标类型不匹配”的错误。如果我没有任何“CategoryItem”,它工作正常,它只是不想向集合中添加任何项目。。。还有其他想法吗?@Aerophilic可能会创建一个简化的测试程序……这样做可能会让你发现最终的区别。如前所述,我的上述基础工作。GL@AerophilicCategoryItem
是公共类吗?是的。。。我用一个不同的视图使用它,所以我正在简化我的主窗口视图,以找出罪魁祸首。我怀疑有一些财产正在使用一项令人头痛的服务……好吧,我想出来了。显然,当您将非本地引用作为属性时,DesignData会呕吐。在我的具体案例中,我公开了一个“WebClient”作为属性。我仍然不知道为什么会出现问题,所以如果有人能告诉我原因,你会得到我对这个解决方案的“回答”。如果我有时间,我将更新问题,使其更具体地说明实际的错误。您使用的是哪个版本的Visual Studio?为什么不在VS2015社区版中尝试一下,看看是否出现同样的情况?此问题可能已在更高版本中得到解决。您使用的是哪个版本的Visual Studio?为什么不在VS2015社区版中尝试,看看是否会出现同样的情况?此问题可能已在更高版本中解决。