C # / WPF / Avalonia - при нажатии кнопки изменить текст - PullRequest
0 голосов
/ 27 января 2020

Я использую Avalonia 0.9.2.

Я новичок в этом и не могу изменить текст при нажатии кнопки.

Вот мой MainWindow.xaml:

<Window xmlns="https://github.com/avaloniaui"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:vm="clr-namespace:ReadyForWar_Launcher.ViewModels;assembly=ReadyForWar_Launcher"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
        x:Class="ReadyForWar_Launcher.Views.MainWindow"
        Icon="/Assets/avalonia-logo.ico"
        Title="ReadyForWar_Launcher">

    <Design.DataContext>
        <vm:MainWindowViewModel/>
    </Design.DataContext>

  <StackPanel>
    <Button Content="Update the Text" Command="{Binding UpdateText}" CommandParameter="Hello World!"></Button>
    <TextBlock Text="{Binding Message}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
  </StackPanel>


</Window>

Вот мой MainWindowViewModel:

public class MainWindowViewModel : ViewModelBase
{
    public string Message = "Welcome to Avalonia!";
    public void UpdateText(object text)
    {
        Message = (string)text;
    }
}

Когда я нажимаю кнопку Update the Text, ничего не происходит? Это почему? Я хочу обновить текст Message до Hello world!, но ничего не происходит.

Почему, где моя ошибка?

1 Ответ

2 голосов
/ 27 января 2020

Взгляните на эту страницу :

using ReactiveUI;

public class MyViewModel : ReactiveObject
{
    private string caption;

    public string Caption
    {
        get => caption;
        set => this.RaiseAndSetIfChanged(ref caption, value);
    }
}

Это означает, что для того, чтобы изменение было отражено в пользовательском интерфейсе, Porperty должен реализовать интерфейс INotifyPropertyChanged. Читайте об этом.

...