我将控件放入网格中。假设控件来自公共类“ butbase”,该公共类是从System.windows.controls.button派生的。代码通常编译和应用程序正常运行。但是确实有些烦人。

当您尝试切换到XAML-Design选项卡时,它将说“文档根元素不受视觉设计师的支持”,这是正常的,我完全可以,但是事实是,所有XAML代码均为下划线和VS2010说:“无法创建ButBase的实例”,尽管仍然通常编译并且能够运行。

我在VS2008中尝试了相同的代码,它说需要在Bupbase中看到一个无公共参数的构造函数,即使在我放置后,它也会显示出相同的错误。

我在这里想念什么?

有帮助吗?

解决方案

确保 ButBase 不是 abstract. 。设计师不喜欢那些。

还要确保不要在构造函数中做任何有趣的业务, InitializedLoaded 处理者。有趣的是包括任何非平凡的任务,例如连接到数据库或其他可能干扰设计师的东西。任何此类代码都应通过设计师检查包裹。有很多方法可以检查设计师的存在,但我发现以下内容可以正常工作:

internal static class DesignModeChecker
{
    private static bool? _isInDesignModePriv;

    public static bool IsInDesignMode
    {
        get
        {
            if (!_isInDesignModePriv.HasValue)
            {
                _isInDesignModePriv = Process.GetCurrentProcess().ProcessName.ToLower().Trim() == "devenv" && !Debugger.IsAttached;
            }

            return _isInDesignModePriv.Value;
        }
    }
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top