當我的視圖綁定到我的單例ViewModel中定義的命令時,是否有一些特殊規則需要注意,與正常(非單例)ViewModels相反?Singletons and ICommand
我所有的ViewModels除了有問題的行爲正常。他們中的每一個都公開了兩個名爲HasChanges
(布爾屬性)和SaveChanges
(方法)的公共成員,我正在調用我的命令的CanExecute
和Execute
函數。
而所有其他瀏覽仍能正常運行,啓用/禁用按鈕時的HasChanges
的值更改和保存的內容點擊這些按鈕時,實現Singleton模式的唯一視圖模型只發生後的第一裝載調用CanExecute
視圖。
之後,從該ViewModel中引發的任何數量的PropertyChanged
事件(我所有的ViewModel都實現了INotifyPropertyChanged
)不會影響該按鈕的禁用狀態。
想知道我在這裏失蹤。
這裏的單模型視圖:
Public NotInheritable Class MyViewModel
Private Shared ReadOnly mInstance As New CommonListsViewModel
Public Shared ReadOnly Property Instance() As CommonListsViewModel
Get
Return mInstance
End Get
End Property
Public Property SaveChangesCommand As ICommand
Private Sub New()
SaveChangesCommand = New Commands.SaveChangesCommand()
End Sub
Public ReadOnly Property HasChanges As Boolean Implements IEditorViewModel.HasChanges
Get
...
End Get
End Property
Public Function SaveChanges() As Boolean Implements IEditorViewModel.SaveChanges
...
End Function
End Class
這裏的命令:
Friend Class SaveChangesCommand
Inherits CommandBase
Public Overrides Function CanExecute(parameter As Object) As Boolean
Return MyViewModel.Instance.HasChanges
End Function
Public Overrides Sub Execute(parameter As Object)
MyViewModel.Instance.SaveChanges()
End Sub
End Class
這是我的觀點:
<Grid DataContext="{x:Static local:CommonListsViewModel.Instance}">
<Button Command="{Binding SaveChangesCommand}">
</Grid>
:正確診斷。謝謝一堆。 – dotNET 2013-03-24 01:21:29