我有一个简单的Avalonia形式:
<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="AvaloniaExperiment.MainWindow"
Title="AvaloniaExperiment">
<StackPanel>
<TextBlock>Welcome to Avalonia!</TextBlock>
<Button Name="btn" Click="btn_OnClick">Fred!</Button>
</StackPanel>
</Window>以及后面代码中的一个方法(我希望这样做,直到我熟悉Avalonia,然后可能会尝试MVVM):
private void btn_OnClick()
{
btn.Text = "Ginger";
}但是,我得到了以下编译错误:
名称btn不存在于当前上下文中(在后面的代码中)
无法为参数Avalonia.Controls:Avalonia.Controls.Button System.Private.CoreLib:System.String类型的属性找到合适的设置器或加法器,可用的设置器参数列表为: System.EventHandler`1[Avalonia.Interactivity.RoutedEventArgs, Avalonia.Interactivity, Version=0.9.0.0, Culture=neutral, PublicKeyToken=null]
无法为参数Avalonia.Controls:Avalonia.Controls.Button System.Runtime:System.String类型的属性命令找到合适的设置器或加法器,可用的设置器参数列表为: Avalonia.UnsetValueType Avalonia.Data.IBinding System.Windows.Input.ICommand (也在Avalonia.UnsetValueType Avalonia.Data.IBinding System.Windows.Input.ICommand中)
在连接这个事件处理程序时,我会做什么错事呢?
发布于 2021-11-09 00:28:47
发件人是您刚才单击的按钮,所以键入发送方到button,并将其内容属性(而不是文本)设置为您想要的任何内容。
public void btn_OnClick( object? sender, RoutedEventArgs args )
{
( sender as Button )!.Content = "Ginger";
}不需要在树或其他任何地方查找它,这样您就可以为所有按钮重用相同的代码,例如,取决于它是哪个按钮,设置不同的名称或样式,或者其他属性等等。
更先进:
public void btn_OnClick( object? sender, RoutedEventArgs args )
{
var button = ( sender as Button )!;
switch ( button.Name )
{
case "btn":
{
button.Content = "Ginger";
}
break;
case "otherBtn":
{
button.Content = "Ale";
}
break;
default:
{
button.Content = "No clue which Button you are!";
}
break;
}
}发布于 2020-05-17 01:42:16
你试过..。
public void btn_OnClick(object sender, RoutedEventArgs e)
{
btn.Text = "Ginger";
}发布于 2020-06-18 02:50:58
您应该在父控件构造器中添加一个ControlLink,如下所示:
public class AnyParentControl
{
Button btn; // for the class
public AnyParentControl() // constructor
{
InitializeComponent(); // necessary method for Avalonia
btn = this.Find<Button>("The Control Name on XAML File");
btn.Click += Cbtn_Click; // event link
}
}秘鲁的问候:D
https://stackoverflow.com/questions/61844734
复制相似问题