我正在将我们的一个iOS应用程序移植到Windows 8 / 8.1。使用MVVM设计模式,我为其中一个页面创建了一个ViewModel。与我们的WebApp类似,Windows应用程序通过对类库中的相关对象进行分组来分离层。有一个业务/模型层(我将其称为App.BLL)和数据访问层(我将其称为App.Data)。
App引用App.BLL,App.BLL引用App.Data。 App.BLL包含名为Items的名称空间,其中包含Class ItemsViewModel。 ItemsViewModel包含一个ObservableCollection项。当调用ItemsViewModels的构造函数时,它通过调用App.Data(List LoadItems())中包含的方法来设置Items。
我一直把头发拉过来的问题是,设计师正在显示错误,如下所示。
“错误3类型Universe无法解析程序集:App.Data,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null。”
我想这是因为App.BLL引用了App.Data,其中App没有引用App.Data。我也尝试过显式定义xmlns:model(xmlns:model =“using:App.BLL.Items; assembly = App.BLL”)的程序集。
这仅在设计师中导致单独的错误。
错误7未找到程序集“App.BLL”。验证您没有错过程序集引用。另外,请验证是否已构建项目和所有引用的程序集。
如果设计师关闭,则提到的第一个错误消失了(定义程序集时),并被替换为:
错误6 XML名称空间中的未知类型'ItemsViewModel'使用:App.BLL.Products; assembly = App.BLL'
然而,确实存在。
namespace App.BLL.Items
{
public class ItemsViewModel : IItemInterface
{
public ObservableCollection<Item> Items
{
get;
private set;
}
public ItemsViewModel()
{
Items = Item.GetItems();
}
private Item _selectedItem;
public Item SelectedItem
{
get
{
return _selectedItem;
}
set
{
_selectedItem = value;
OnItemSelected(_selectedItem);
}
}
private RelayCommand<Item> _itemSelected;
public RelayCommand<Item> ItemSelected
{
get
{
return _itemSelected ??
(_itemSelected = new RelayCommand<Item>(item =>
{
SelectedItem = item;
//Notify Item Selected
}));
}
}
public event ItemSelectedEventHandler ItemSelectedChanged;
protected virtual void OnItemSelected(Item selectedItem)
{
ItemSelectedChanged(this, new ItemChangedEventArgs(selectedItem));
}
}
}
此时我对设计师错误的关注并不在乎,因为它们在关闭时会消失,因此在运行时似乎可以正常工作。但是上面的错误6我无法编译。
<Page
x:Class="App.ItemsPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:App"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:model="using:App.BLL.Items"
mc:Ignorable="d">
<Page.Resources>
<model:ItemsViewModel x:Key="ItemSource" />
</Page.Resources>
<Grid DataContext="{Binding Source={StaticResource ItemSource}}" />
</Page>
我在这里问了一整天,然后在这里提问,我希望我提供了帮助寻找解决方案所需的一切。
编辑:我不能为我的生活得到正确的格式化。我会继续努力,但如果有人可以编辑那也没关系。