0

Visual Studio2010Express内でVB.NETとWPFを使用しています。

現在、私は持っています:

  • downloadListDGという名前のDataGrid 。これには、画像を含むテンプレートである列があります。
  • カスタムDownloadListItemクラスのObservableCollection 。
  • このDownloadListItemには、別のカスタムクラスであるパブリックプロパティがあります。
  • このクラスには、StateType(カスタム列挙型)であるプライベートdimと、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

前もって感謝します

4

1 に答える 1

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

エンドクラス

于 2012-11-06T21:05:35.203 に答える