Значения сетки данных не обновляются в wpf vb.net при использовании привязки данных в наблюдаемой коллекции - PullRequest
0 голосов
/ 06 ноября 2018

Я использую привязку данных в сетке данных, и я могу получить значения в сетке, но когда я редактирую их, это не запускает обновление значений в свойстве для значения. Я хочу иметь возможность что-то делать со значением, когда я его изменил.

В моем PLPage.xaml.vb у меня есть:

Class PLPage
Implements INotifyPropertyChanged

Public MyCollection As New ObservableCollection(Of Pl)

Dim reg As List(Of String) = New List(Of String)()

Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged

Public Sub New()
    InitializeComponent()
    Me.DataContext = MyCollection

End Sub

Private Sub FillData()
Dim pla As Pl = New Pl()
            pla.Reg = reg(count)

            MyCollection.Add(pla)


        PGTable.ItemsSource = MyCollection
End Sub

Public Class Pl
    Implements INotifyPropertyChanged
Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged

Public Property _r As String

Public Property Reg As String
    Get
        Return _r
    End Get
    Set(value As String)
        If _r <> value Then
            _r = value
            'RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs("Reg"))
            NotifyPropertyChanged("Reg")
        End If
    End Set
End Property

Private Sub NotifyPropertyChanged(propertyName As String)
    Me.OnPropertyChanged(New PropertyChangedEventArgs(propertyName))
End Sub

Protected Overridable Sub OnPropertyChanged(e As PropertyChangedEventArgs)
    RaiseEvent PropertyChanged(Me, e)
End Sub

End Class

Тогда в моем xaml у меня есть:

<DataGrid ItemsSource="{Binding Pl}" x:Name="PlGridTable" AutoGenerateColumns="False">
                        <DataGrid.Columns>

                            <materialDesign:MaterialDataGridTextColumn Header="Desig" Width="Auto" Binding="{Binding _reg, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" EditingElementStyle="{StaticResource MaterialDesignDataGridTextColumnPopupEditingStyle}"/>

                        </DataGrid.Columns>
                    </DataGrid>

Когда я впервые загружаю его, он запускает свойство reg и правильно присваивает значение, но когда я обновляю значение, используя элемент редактирования, встроенный в пакет дизайна материала, он нигде не срабатывает. Любая помощь в отношении того, почему будет оценено.

1 Ответ

0 голосов
/ 06 ноября 2018

{Binding _reg} должно быть {Binding Reg}, поскольку свойство имеет имя Reg:

<materialDesign:MaterialDataGridTextColumn Header="Desig" Width="Auto" Binding="{Binding Reg, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" EditingElementStyle="{StaticResource MaterialDesignDataGridTextColumnPopupEditingStyle}"/>
...