触发绑定时是否可以执行命令?例如给出:
<MultiBinding Converter="{StaticResource someConvertor}">
<Binding Path="FirstName"/>
<Binding Path="LastName"/>
</MultiBinding>
我想做类似的事情:
<MultiBinding Converter="{StaticResource someConvertor}" TriggerCommand="{Binding SomeCommand}">
<Binding Path="FirstName"/>
<Binding Path="LastName"/>
</MultiBinding>
这样,只要FirstName
或LastName
发生变化,就会执行'SomeCommand'吗?
我看到的问题是,因为markupextension不是来自DependencyObject
,所以我不确定如何得到我想要的行为
基本上我有一些代码不能很好地使用绑定,这样的东西会非常有用。
答案 0 :(得分:2)
在数据源类上实现INotifyPropertyChanged。
This guide提供了有关如何执行此操作的完整文档。
...但总的来说,我们假设您使用属性FirstName和LastName绑定到人列表
Public Class People
Implements System.ComponentModel.INotifyPropertyChanged
private _firstName as String
private _lastName as String
Public Event PropertyChanged As PropertyChangedEventHandler _
Implements INotifyPropertyChanged.PropertyChanged
Public Property FirstName As String
Get
Return _firstName
End Get
Set(value As String)
_firstName = value
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs("FirstName"))
End Set
End Property
Public Property LastName As String
Get
Return _lastName
End Get
Set(value As String)
_lastName = value
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs("LastName"))
End Set
End Property
只要在数据绑定控件中更改了值,就会触发PropertyChanged事件(假设它们是双向绑定)。因此,您可以为该事件添加处理程序并触发您喜欢的任何命令。