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

嵌套UserControl抛出“属性已被注册”设计器异常求助

解决"MyColor property was already registered by SeparatorLineText"设计器报错问题

1. 规范依赖属性注册代码

确保MyColor依赖属性的注册完全符合WPF要求,避免触发重复注册:

  • 依赖属性字段必须定义为静态只读,命名遵循属性名+Property规则
  • 注册时的ownerType参数必须严格指向SeparatorLineText类型
  • 仅在静态构造函数或静态字段初始化时执行注册,不要在其他方法中重复调用Register

正确示例代码:

public static readonly DependencyProperty MyColorProperty =
    DependencyProperty.Register(
        "MyColor", 
        typeof(Brush), 
        typeof(SeparatorLineText), 
        new PropertyMetadata(Brushes.Gray));

public Brush MyColor
{
    get => (Brush)GetValue(MyColorProperty);
    set => SetValue(MyColorProperty, value);
}

2. 清理设计器缓存

WPF设计器的缓存残留可能引发重复注册误报:

  • 关闭Visual Studio
  • 删除项目根目录下的bin和obj文件夹
  • 删除本地设计器缓存目录:%LocalAppData%\Microsoft\VisualStudio\<你的VS版本号>\Designer\ShadowCache
  • 重新打开项目并执行重新生成解决方案

3. 检查控件引用与嵌套逻辑

确认SeparatorLineText在嵌套层级中的引用无冲突:

  • 检查XAML中的命名空间引用是否统一,避免同时使用本地命名空间和程序集全路径引用
  • 移除设计时动态加载控件的代码(如果有),设计器无法正确处理这类运行时逻辑

4. 排查程序集重复加载问题

若项目涉及多程序集引用,确保SeparatorLineText所在程序集未被重复加载:

  • 检查项目引用列表,避免同时引用同一程序集的不同版本
  • 确认MySubWindow和MainWindow引用的是同一个版本的控件程序集

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 02:45:34