C# “设计模式错误”;对象与目标类型“不匹配”;用于加载的页面资源

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

我目前正试图利用ViewModel的设计数据来模拟视图的数据。具体来说,我的silverlight应用程序有一个视图前端和一个ViewModel后端

当我模仿其他观点时,一切都很顺利。即使在这种特殊的观点下,唯一的问题似乎还是与收藏有关

你知道为什么我的“CategoryItem”在给“CategoryName”赋值时总是给我一个错误吗?我不知道是什么导致了这个问题

代码如下:

我的设计数据:

<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@Aerophilic
CategoryItem
是公共类吗?是的。。。我用一个不同的视图使用它,所以我正在简化我的主窗口视图,以找出罪魁祸首。我怀疑有一些财产正在使用一项令人头痛的服务……好吧,我想出来了。显然,当您将非本地引用作为属性时,DesignData会呕吐。在我的具体案例中,我公开了一个“WebClient”作为属性。我仍然不知道为什么会出现问题,所以如果有人能告诉我原因,你会得到我对这个解决方案的“回答”。如果我有时间的话,我会更新这个问题,让它更具体地说明什么是真正的错误。感谢OmegaMan,不幸的是,这不起作用(我之前已经试过了)。我的DesignData xaml中仍然出现“对象与目标类型不匹配”的错误。如果我没有任何“CategoryItem”,它工作正常,它只是不想向集合中添加任何项目。。。还有其他想法吗?@Aerophilic可能会创建一个简化的测试程序……这样做可能会让你发现最终的区别。如前所述,我的上述基础工作。GL@Aerophilic
CategoryItem
是公共类吗?是的。。。我用一个不同的视图使用它,所以我正在简化我的主窗口视图,以找出罪魁祸首。我怀疑有一些财产正在使用一项令人头痛的服务……好吧,我想出来了。显然,当您将非本地引用作为属性时,DesignData会呕吐。在我的具体案例中,我公开了一个“WebClient”作为属性。我仍然不知道为什么会出现问题,所以如果有人能告诉我原因,你会得到我对这个解决方案的“回答”。如果我有时间,我将更新问题,使其更具体地说明实际的错误。您使用的是哪个版本的Visual Studio?为什么不在VS2015社区版中尝试一下,看看是否出现同样的情况?此问题可能已在更高版本中得到解决。您使用的是哪个版本的Visual Studio?为什么不在VS2015社区版中尝试,看看是否会出现同样的情况?此问题可能已在更高版本中解决。