1

バインディングがトリガーされたときにコマンドを実行することは可能ですか? 例えば与えられた:

<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」が実行されるようにしますか?

私が見る問題は、そのマークアップ拡張機能が から派生していないためDependencyObject、必要な動作を取得する方法がわからないことです

基本的に、バインディングでうまく動作しないコードがいくつかありますが、このようなものは非常に便利です。

4

1 に答える 1

2

データソース クラスに INotifyPropertyChanged を実装します。

このガイドでは、これを行う方法に関する完全なドキュメントを提供します。

...しかし要約すると、プロパティ 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 イベントは、データバインドされたコントロールで値が変更されるたびに発生します (それらが双方向バインディングであると仮定します)。したがって、そのイベントにハンドラーを追加して、好きなコマンドを起動できます。

于 2013-06-15T12:10:38.553 に答える