【问题标题】:Execute command when a binding updates?绑定更新时执行命令?
【发布时间】:2013-06-15 11:40:23
【问题描述】:

是否可以在触发绑定时执行命令?例如给定:

<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>

这样每当FirstNameLastName 发生变化时,就会执行“SomeCommand”?

我看到的问题是,由于该标记扩展不是从 DependencyObject 派生的,所以我不确定如何获得我想要的行为

基本上我有一些代码不能很好地与绑定一起使用,这样的东西会非常有用。

【问题讨论】:

    标签: wpf binding command


    【解决方案1】:

    在您的数据源类上实现 INotifyPropertyChanged。

    This guide 提供了有关如何执行此操作的完整文档。

    ...但总而言之,假设您绑定到具有 FirstName 和 LastName 属性的 people 列表

    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 事件将在数据绑定控件中的值发生更改时触发(假设它们是双向绑定)。因此,您可以为该事件添加一个处理程序并触发您喜欢的任何命令。

    【讨论】:

    • 对不起,但这不是我想要的。 FirstName 和 LastName 已经在实施通知更改。我想将命令绑定到 XAMl 中使用的特定多重绑定
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-16
    • 2011-02-28
    • 1970-01-01
    • 2014-02-04
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    相关资源
    最近更新 更多