2014-01-08 2 views
0

Я изучаю учебник проекта WPF-MVVM на C#, а также я пытаюсь записать его в VB.Как написать параметры функции DelegateCommand в VB.net

В ViewModel файле (C#) код так:

public ICommand RemoveBookCommand 
    { 
     get 
     { 
      if (_removeBookCommand == null) 
      { 
       _removeBookCommand = new DelegateCommand<Book>(RemoveBook, CanRemoveBook); 
      } 
      return _removeBookCommand; 
     } 
    } 

    private bool CanRemoveBook(Book book) 
    { 
     return Books.Count > 0 && Books.Contains(book); 
    } 

    private void RemoveBook(Book book) 
    { 
     Books.Remove(book); 
     CurrentBook = null; 
    } 

И я преобразовать его в VB так:

Public Property RemoveBookCommand() As ICommand 
     Get 
      If _removeBookCommand Is Nothing Then 
       _removeBookCommand = New DelegateCommand(Of Book)(RemoveBook, CanRemoveBook) 
      End If 
      Return _removeBookCommand 
     End Get 
     Set(value As ICommand) 

     End Set 
    End Property 

    Private Function CanRemoveBook(book As Book) As Boolean 
     Return Books.Count > 0 And Books.Contains(book) 
    End Function 

    Private Sub RemoveBook(book As Book) 
     Books.Remove(book) 
     CurrentBook = Nothing 
    End Sub 

Кажется, что нет никаких проблем

Но Visual Studio говорит:

Argument not sp ecified для параметра 'book' of 'Частная функция CanRemoveBook (книга As Models.Book) As Boolean'.

Аргумент не указан для параметра 'book' of 'Private Sub RemoveBook (книга As Models.Book)'.

Он работает для C#, если для функций не указан аргумент «Книга». Итак, что проблема в VB.net

+0

Вы можете установить свойство 'Public ReadOnly RemoveBookCommand собственности() Как ICommand', а затем удалите часть 'Set' preoprty, поскольку она, похоже, ничего не делает. – Ric

ответ

Смежные вопросы