【问题标题】:VB.net WPF DataGrid ObservableCollection Binding property updateVB.net WPF DataGrid ObservableCollection Binding 属性更新
【发布时间】:2012-10-26 17:27:26
【问题描述】:

我在 Visual Studio 2010 Express 中使用 VB.NET 和 WPF。

目前,我有:

  • 一个名为 downloadListDG 的 DataGrid。这有一个列,它是一个包含图像的模板。
  • 自定义 DownloadListItem 类的 ObservableCollection。
  • 这个 DownloadListItem 有一个公共属性,它是另一个自定义类。
  • 这个类有一个私有的 dim 是一个 StateType(一个自定义枚举)和一个公共的只读属性,它根据 StateType 是什么返回一个字符串(如果你好奇的话,实际上是一个图像 URI)。
  • DownloadListItem 还有一个公共属性,它只返回 StateType(这仅用于绑定目的)

我的问题是,每当 StateType 更改时,DataGrid 中的图像列都不会更改。我一直在尝试使用 IPropertyChangedNofity,但没有任何变化,所以要么我使用不正确,要么我需要使用其他方法。

Implements INotifyPropertyChanged

Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged

AddHandler ControllerRef.StateChanged, AddressOf StateChangeHandler

Private Sub StateChangeHandler(NewState As State)
    MsgBox(NewState)
    RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs("CurrentState"))
End Sub

提前致谢

【问题讨论】:

    标签: wpf vb.net datagrid observablecollection


    【解决方案1】:

    确保 PropertyChanged 事件通知 UI 您绑定的属性名称,而不是触发更改的属性。示例:

    Imports System.ComponentModel
    

    公共类 DownloadListItem:实现 INotifyPropertyChanged

    Friend Enum StateEnum
        State1 = 0
        State2 = 1
    End Enum
    
    Private _CurrentState As StateEnum
    
    Private Sub ChangeEnumValue(NewValue As StateEnum)
        _CurrentState = NewValue
        OnPropertyChanged("ImageURI")
    End Sub
    
    Public ReadOnly Property ImageURI As String
        Get
            ' TODO: Implement conditional logic to return proper value based on CurrentState Enum
        End Get
    End Property
    
    Public Event PropertyChanged(sender As Object, e As PropertyChangedEventArgs) Implements INotifyPropertyChanged.PropertyChanged
    
    Protected Sub OnPropertyChanged(PropertyName As String)
        RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(PropertyName))
    End Sub
    

    结束类

    【讨论】:

    • 辛苦了!非常感谢!
    猜你喜欢
    • 2016-12-28
    • 1970-01-01
    • 1970-01-01
    • 2012-04-16
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-07
    相关资源
    最近更新 更多