You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AvaloniaUI自定义UserControl绑定报错AXN0002,求解决方案

排查AvaloniaUI自定义UserControl的AXN0002错误

1. 核对命名空间拼写与大小写

后台代码里的命名空间必须和MainView AXAML中声明的完全一致,Avalonia对大小写敏感,别写错:

  • 后台代码示例:
    namespace AvaloniaUserControlTest;
    
    public partial class MyUserControl : UserControl
    {
        // ... Caption属性注册代码
    }
    
  • MainView AXAML的命名空间声明:
    xmlns:local="clr-namespace:AvaloniaUserControlTest"
    
    检查有没有多打或少打字符,大小写是否统一。

2. 确认AXAML文件的生成操作

右键MyUserControl.axaml → 属性,把生成操作改成AvaloniaXaml。如果这个设置不对,编译器不会把它当成Avalonia控件处理,自然识别不了类型。

3. 检查AXAML根节点的x:Class

MyUserControl.axaml的根节点必须是UserControl,且x:Class要精确对应后台类的命名空间+类名:

<UserControl xmlns="https://github.com/avaloniaui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             x:Class="AvaloniaUserControlTest.MyUserControl">
    <TextBlock Text="{TemplateBinding Caption}" />
</UserControl>

x:Class写错的话,控件的后台代码和AXAML无法关联,也会导致类型识别失败。

4. 验证StyledProperty注册代码

Caption属性的注册要符合Avalonia的规范,别写错泛型参数或属性名:

public static readonly StyledProperty<string> CaptionProperty =
    AvaloniaProperty.Register<MyUserControl, string>(nameof(Caption));

public string Caption
{
    get => GetValue(CaptionProperty);
    set => SetValue(CaptionProperty, value);
}

泛型参数必须是你的MyUserControl,属性名要和注册时的nameof(Caption)一致。

5. 清理重建项目解决缓存问题

有时候是IDE或编译缓存搞的鬼,按这个步骤来:

  • 右键项目 → 清理
  • 删除项目根目录下的bin和obj文件夹
  • 右键项目 → 重建
  • 重启你的IDE(Visual Studio/Rider都可能有缓存问题)

6. 检查项目引用与框架版本

如果自定义控件在单独的类库项目里,确保主项目已经正确引用了这个类库;如果是同一个项目,确认目标框架版本一致,避免版本不兼容导致的类型无法识别。

内容的提问来源于stack exchange,提问作者Andrew Fraser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 10:55:02