0
我正在做.net中的第一个项目,并且我尝试使用MVVM模式。我如何在我的ViewModel和我的ICommand类之间共享数据?我的视图模型是这样的:在ICommand实现,ViewModel和View之间共享数据
public class WorkClass : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private Book mybook;
private ObservableCollection<Book> bookList;
public Book Mybook
{
get { return mybook; }
set
{
book = value;
OnPropertyChanged("Mybook");
}
}
public ObservableCollection<Book> BookList
{
get { return bookList; }
private set
{
bookList = value;
OnPropertyChanged("BookList");
}
}
testCommand2 test = new testCommand2();
public ICommand Test { get { return test; } }
private class testCommand2 : ICommand
{
public void Execute(object parameter)
{
// Do stuff here
}
public bool CanExecute(object parameter)
{
return true;
}
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
}
protected void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
}
我实现的ICommand作为内部类,但我也尝试过的“独立”级,但不能让它工作之一。我想让我的命令“测试”与WorkClass属性BookList和Mybook一起使用和共享数据。 (书是我只包含一些字符串属性定义的类)
我的应用程序现在有两个窗口,在主窗口中创建WorkClass的实例并将其插入到它的datacontext。然后,我将其穿过的DataContext像这样其他的窗口(这是正确的?):
Window1 w = new Window1();
w.DataContext = this.DataContext;
w.ShowDialog();
我想从这些窗口我的命令,从该WorkClass实例执行上的数据变化。我希望我清楚自己在问什么。我知道最好使用可通过互联网获得的RelayCommand或DelegateCommand类,但由于这是项目到学校,所以恐怕会被视为抄袭其他人的工作。
如果您需要我从代码中发布更多内容或解释我将编辑的任何内容。
谢谢你的帮助。
你有一个参数对你的命令的方法 - 这是否是不够的? –
什么不行? –
好吧,它的工作方式,但这种方式我不知道如何使用Execute方法中WorkClass的数据。当我有时间时,我会尝试Viacheslav的答案:) – xyann00