我对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中,我不知道如何选择带有Name="TestBlock“的TextBlock并将文本更改为"Hello World”。
你能帮我解决这个问题吗?
发布于 2020-01-27 13:13:00
有两种方法,推荐的方法和直接的方法。
推荐:使用MVVM模式。使用ButtonTextProperty和RunTheThing命令创建视图模型,使用该命令更改属性,将该模型分配给DataContext,并将按钮文本和命令绑定到视图模型属性。MVVM方法基本上与WPF中的方法相同,因此您可以使用其中的文档和教程(适用于大多数Avalonia,BTW)。例如,这是一个good one (不是广告,来自谷歌的第四个链接)。
简单(也叫winforms-way):在你的按钮上添加x:Name="MyButton",并在调用AvaloniaXamlLoader.Load(this);之后使用this.FindControl<Button>("MyButton")。这将为您提供一个Button引用,您可以通过代码对其进行操作。不使用命令,你可以直接从代码后台订阅点击处理程序,将public void MyButton_OnClick(object sender, RoutedEventArgs args){}添加到你的MainWindow类中,并使用Click="MyButton_OnClick"添加replace Command和CommandParameter。这样,单击按钮就会触发事件处理程序。
请注意,第二种方法不能很好地适应应用程序的规模,并且在处理列表时会受到代码复杂性的影响。
https://stackoverflow.com/questions/59921632
复制相似问题