C#/AvaloniaUI - 单击按钮并更改文本

C#/AvaloniaUI - Click a button and change Text

我是 AvaloniaUI 的新手。

单击按钮时,我真的很难更改文本。 这是我的代码:

  <Window xmlns="https://github.com/avaloniaui"
          xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
          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.MainWindow"
          Title="ReadyForWar_Launcher">
    <StackPanel>
      <TextBlock Name="TestBlock">Show my text here!</TextBlock>
      <Button Command="{Binding RunTheThing}" CommandParameter="Hello World">Change the Text!</Button>
    </StackPanel>
  </Window>

这是我的 MainWindow.xaml.cs:

using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;

namespace ReadyForWar_Launcher
{
    public class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
#if DEBUG
            this.AttachDevTools();
#endif
        }

        private void InitializeComponent()
        {
            AvaloniaXamlLoader.Load(this);
        }

        public void RunTheThing()
        {

        }
    }
}

内部 RunTheThing 我不知道如何 select Name="TestBlock" 的 TextBlock 并将文本更改为 "Hello World".

你能帮我解决这个问题吗?

有两种方法,推荐的一种和直接的一种。

推荐:使用MVVM模式。使用 ButtonTextPropertyRunTheThing 命令创建视图模型,创建更改 属性 的命令,将该模型分配给 DataContext 并将按钮文本和命令绑定到视图模型特性。 MVVM 方法与 WPF 中的基本相同,因此您可以使用那里的文档和教程(适用于大多数 Avalonia,顺便说一句)。比如这里有一个good one(不是广告,来自google的第4个link)。

直接(又名 winforms 方式):将 x:Name="MyButton" 添加到您的按钮并在调用 AvaloniaXamlLoader.Load(this); 后使用 this.FindControl<Button>("MyButton")。这将为您提供一个 Button 引用,您可以通过代码对其进行操作。您可以直接从代码隐藏订阅点击处理程序,而不是使用命令,将 public void MyButton_OnClick(object sender, RoutedEventArgs args){} 添加到您的 MainWindow class 并添加用 Click="MyButton_OnClick" 替换 Command 和 CommandParameter。这样按钮点击将触发您的事件处理程序。

请注意,第二种方法不能很好地适应应用程序的大小,并且在处理列表时会遇到代码复杂的问题。