我正在尝试从Expression Blend中的ViewModel类创建一些示例数据。 但Expression Blend会停止并说“对象引用未设置为对象的实例”。就个人而言,我不明白这个例外的来源。
有没有人知道为什么会这样?
这是我的UsersListViewModel:
[Export]
public class UserListViewModel : ViewModelBase
{
[ImportingConstructor]
public UserListViewModel(IUserListView view)
: base(view)
{
}
private ObservableCollection<UserItem> _userList;
public ObservableCollection<UserItem> UserList
{
get { return _userList; }
set
{
if (_userList != value)
{
_userList = value;
RaisePropertyChanged("UserList");
}
}
}
private UserItem _selectedUser;
public UserItem SelectedUser
{
get { return _selectedUser; }
set
{
if (_selectedUser != value)
{
_selectedUser = value;
RaisePropertyChanged("SelectedUser");
}
}
}
private string _searchText;
public string SearchText
{
get { return _searchText; }
set
{
if (_searchText != value)
{
_searchText = value;
RaisePropertyChanged("SearchText");
}
}
}
private ICommand _searchCommand;
public ICommand SearchCommand
{
get { return _searchCommand; }
set
{
if (_searchCommand != value)
_searchCommand = value;
}
}
// ... other ICommands
}
提前感谢你的帮助,
干杯, -G。
答案 0 :(得分:2)
UPDATE! Laurent(MvvmLight作者)发布了如何调试设计时数据。 Blog post here.
我在Blend中或在Visual Studio中打开.xaml时找到了此错误的原因和解决方法。
对象引用未设置为对象的实例。
Blend尝试运行你的设计时代码,如果在某处遇到一个空指针,这就是你得到的错误。
因此,跟踪代码创建设计时数据。很可能你忘记初始化某些东西或者你的错误类型。
如果你可以在设计师运行用户代码时捕获断点,这很容易找到,但我认为这不可行。
答案 1 :(得分:1)
遇到此问题时,我发现我的属性上的属性会导致此错误消息。
在创建示例数据时注释[ImportingConstructor]
和[Export]
(使用Blend编译项目一次以确保不使用旧版本)可能会在这里做到这一点。