想象一下,你有一个简单的WPF窗口,只有一个
TextBox
还有
Button
在上面。这个
文本框
是的
Text
属性绑定到名为
FileName
还有
按钮
是的
Command
属性绑定到名为
ImportCommand
.
<StackPanel>
<TextBox Text="{Binding FileName, UpdateSourceTrigger=PropertyChanged}" />
<Button Content="Import" Command="{Binding ImportCommand}" />
</StackPanel>
视图模型基本上也是锅炉板代码。
Public Class MainViewModel
Inherits ObservableItem
Private _fileName As String
Private _importCommand As ICommand = New RelayCommand(AddressOf Me.Import, AddressOf Me.CanImport)
Public Sub New()
Me.FileName = "C:\Temp\temp.dat"
End Sub
Public Property FileName As String
Get
Return _fileName
End Get
Set(value As String)
MyBase.SetProperty(Of String)(_fileName, value)
End Set
End Property
Public ReadOnly Property ImportCommand As ICommand
Get
Return _importCommand
End Get
End Property
Private Sub Import()
Throw New NotImplementedException
End Sub
Private Function CanImport() As Boolean
Return Not String.IsNullOrEmpty(Me.FileName) AndAlso IO.File.Exists(Me.FileName)
End Function
End Class
两者之间没有明显的联系
文本框
还有
按钮
,两者之间没有明显的联系
文件名
财产和
进口指令
.
那么,这个问题是如何解决的呢
进口指令
检测,我可能已经改变了
文件名
属性,并且此更改可能会影响
按钮
这个
进口指令
一定会吗?
WPF打电话吗
CanExecute
在…上
任何
命令
和
任何
PropertyChanged
发生了什么?对我来说好像有很多不必要的工作?