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

C# C/UI-单击按钮并更改文本,c#,avaloniaui,C#,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="ht

我对阿瓦罗尼亚伊很陌生

当我点击一个按钮时,我真的很难改变文本。 这是我的密码:

  <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>
在RunTheThing中,我不知道如何选择Name=TestBlock的文本块并将文本更改为Hello World


你能帮我一下吗?

有两种方法,推荐的和简单的

建议:使用MVVM模式。使用buttonextproperty和RunTheThing命令创建视图模型,使用该命令更改属性,将该模型指定给DataContext,并将按钮文本和命令绑定到视图模型属性。MVVM方法基本上与WPF中的方法相同,因此您可以使用适用于大多数Avalonia(顺便说一句)的文档和教程。例如,这里有一个来自google的非广告第四链接

简单的winforms方式:将x:Name=MyButton添加到按钮中,并在调用AvalonixamlLoader.Loadthis;后使用this.FindControlMyButton;。这将为您提供一个按钮引用,您可以从代码中操纵它。不使用命令,您可以直接从codebehind订阅click处理程序,将public void MyButton\u OnClick对象发送者、RoutedEventArgs args{}添加到MainWindow类,并使用click=MyButton\u OnClick添加replace命令和CommandParameter。这样,单击按钮将触发事件处理程序


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

有两种方法,推荐的和简单的

建议:使用MVVM模式。使用buttonextproperty和RunTheThing命令创建视图模型,使用该命令更改属性,将该模型指定给DataContext,并将按钮文本和命令绑定到视图模型属性。MVVM方法基本上与WPF中的方法相同,因此您可以使用适用于大多数Avalonia(顺便说一句)的文档和教程。例如,这里有一个来自google的非广告第四链接

简单的winforms方式:将x:Name=MyButton添加到按钮中,并在调用AvalonixamlLoader.Loadthis;后使用this.FindControlMyButton;。这将为您提供一个按钮引用,您可以从代码中操纵它。不使用命令,您可以直接从codebehind订阅click处理程序,将public void MyButton\u OnClick对象发送者、RoutedEventArgs args{}添加到MainWindow类,并使用click=MyButton\u OnClick添加replace命令和CommandParameter。这样,单击按钮将触发事件处理程序


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

您好,谢谢您的回答。然而,Avalonia似乎不允许使用Click=MyButton\u OnClick,我认为不再允许使用Click。你能对第一种方法做一个更详细的回答吗?按钮类中的点击事件。确保事件处理程序签名匹配并且处理程序是公共的!非常感谢。你能用Click=method试试一个例子吗?当我尝试解决该方法时,我收到了错误?测试并公开作废MyButton\u Clickobject sender,RoutedEventArgs=>Button sender.Content=新文本;在MainWindow.xaml.cs中为我工作您好,谢谢您的回答。然而,Avalonia似乎不允许使用Click=MyButton\u OnClick,我认为不再允许使用Click。你能对第一种方法做一个更详细的回答吗?按钮类中的点击事件。确保事件处理程序签名匹配并且处理程序是公共的!非常感谢。你能用Click=method试试一个例子吗?当我尝试解决该方法时,我收到了错误?测试并公开作废MyButton\u Clickobject sender,RoutedEventArgs=>Button sender.Content=新文本;在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()
        {

        }
    }
}