Visual Studio 阿瓦隆尼亚错误:无法为属性PointerPressed找到合适的设置器或添加器

chhkpiq4  于 2023-02-19  发布在  其他
关注(0)|答案(1)|浏览(512)

我尝试创建一个非常简单的应用程序,其中包含一个画布,当单击画布时,该画布将注册一个PointerPressed事件,但我收到以下错误:
System.Xaml.XamlException:'无法为类型为Avalonia的属性PointerPressed找到合适的设置程序或加法器。参数System. Private的Input. InputElement。CoreLib:System. String,可用的设置程序参数列表为:"系统.事件处理程序" 1 Avalonia. Input. PointerPressedEventArgs,Avalonia. Input,版本= 0.10.18.0,区域性=非特定区域性,公钥标记= c8d484a7012f9a8b第8行位置11。"行号" 8 "和行位置" 11 "。"
XAML:

<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="TestCanvas.MainWindow"
        Title="TestCanvas">
  <Canvas PointerPressed="AddShape"/>
</Window>

代码:

using Avalonia.Controls;
using Avalonia.Input;
using Avalonia.Interactivity;

namespace TestCanvas
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        public void AddShape(object sender, PointerPressedEventArgs e)
        {

        }
    }
}

我也尝试过类似的按钮点击事件,但得到了同样的错误。是我做错了还是项目中的某些设置不正确导致了问题?我只是使用了Avalonia应用程序模板。

9vw9lbht

9vw9lbht1#

此错误是由于在XAML中绑定事件处理程序时,必须使用{x:EventHandler}语法,而不是直接引用事件处理程序名称。
因此,应更新XAML中的PointerPressed属性:

<Canvas PointerPressed="{x:EventHandler AddShape}">
</Canvas>

这将告诉XAML在为该元素激发PointerPressed事件时调用AddShape方法。

相关问题