почему <ObservableProperty> и <RelayCommand> не работают?

Мой проект находится в .NET 6. Почему следующий код не работает?

Насколько я понимаю, код создается с помощью атрибутов, что упрощает кодирование.

Я сделал что-то не так?Xaml:

      <Window.DataContext>
        <self:MainWindowVM />
    </Window.DataContext>
    <StackPanel >
        <Label  Content="{Binding Path=FirstLabel ,Mode=TwoWay ,UpdateSourceTrigger=PropertyChanged }" Height="50" />

        <Button  Command="{Binding Path=ExitMe}"  Content="Exit" />
    </StackPanel>

Кодирование:

      Imports CommunityToolkit.Mvvm.ComponentModel
Imports CommunityToolkit.Mvvm.Input

Class MainWindow

End Class

Partial Public Class MainWindowVM
    Inherits ObservableObject

    Public Sub New()
        Me.FirstLabel = "default value..."

    End Sub

    <ObservableProperty>
    Private FirstLabel As String

    <RelayCommand>
    Private Sub ExitMe()
        Windows.Application.Current.Shutdown()
    End Sub

End Class

Во время выполнения я получаю два сообщения об ошибках:

Свойство ExitMe не найдено в объекте MainWindowVM.

Ошибка пути BindingExpression: свойство «FirstLabel» не найдено в «объекте» «MainWindowVM»

Я знаю, что следующий код будет работать. Но почему приведенный выше код не работает?

          Imports CommunityToolkit.Mvvm.ComponentModel
Imports CommunityToolkit.Mvvm.Input

Class MainWindow

End Class

Partial Public Class MainWindowVM
    Inherits ObservableObject

    Public Sub New()
        Me.FirstLabel = "default value..."
        Me.ExitMe = New RelayCommand(AddressOf exMe)
    End Sub

    <ObservableProperty>
    Private fLabel As String

    Public Property FirstLabel As String


    Private Sub Save()
        Me.fLabel = FirstLabel


    End Sub



    <RelayCommand>
    Private Sub exMe()
        Windows.Application.Current.Shutdown()
    End Sub

    Public ReadOnly Property ExitMe As ICommand


End Class

0 ответов

Другие вопросы по тегам