2

使用 VS.NET 2008,输出类型类库,目标框架 .NET 2.0

我想出了一个简化的场景来问这个问题。

我有一个Button用户控件,它是一个简单的面板,上面有一个大按钮。

我想创建一个RedButton扩展 的控件,Button类似地,一个GreenButton.
例如Class RedButton : Button

理想情况下,当我打开RedButton的设计器时,我会看到我在其中创建的按钮Button并能够对其进行修改,例如将其设为红色,或更改字体等。

我曾经尝试过这样做,但是当我打开RedButton's 设计器时,我得到了一堆错误。

在这种情况下,以编程方式完成所有这些工作对我们来说不是一种选择,因为在实际情况下这将是一种痛苦。

有人可以对此有所了解吗?非常感谢。

4

6 回答 6

1

老实说,您的示例应该可以正常工作。只需确保为派生类提供默认构造函数即可。还要确保您不使用通用控件,因为设计者不知道如何创建它的实例。

于 2008-12-16T16:02:20.917 回答
0

如果您还没有,请遵循此示例:

public class RedButton : Button

然后在 XAML 中而不是

<UserControl></UserControl>

开始/结束您的 XAML 文件

<Button></Button>

请注意,即使您尚未定义命名空间,也可以从另一个命名空间中的某些内容继承。例子:

<radDock:RadPane ...            
        xmlns:radDock="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls.Docking"
        ...
        Title="{Binding Path=StudyTitle}"...
于 2011-06-21T17:35:43.377 回答
0

自 VS.NET 2008 以来,根设计器能够呈现您提到的“一堆错误”。一般来说,所描述的场景应该“正常工作”。

你面临什么样的错误?

于 2009-05-09T18:18:37.647 回答
0

您的装配设置是否要延迟签名?查找延迟签名属性以及项目属性中的复选框。我已经看到延迟签名导致 VS2005 出现此类问题,也许它在 VS2008 中仍然是一个问题。

于 2008-12-16T14:12:53.553 回答
0

我不得不在一家老公司处理这个问题多年。我当时稍微研究了一下。我认为没有解决方案。

我不知道您想在实际示例中扩展多少基类,但是您在示例中提到的更改将是微不足道的。就像

btnTheButton.BackGround=Color.Red; 

实际上,可能您需要对按钮进行的​​任何更改都可以在几分钟内完成。不幸的是,每次您需要继承一个新控件时,这将是几分钟,但我认为这是唯一的选择

于 2008-12-16T14:26:05.337 回答
0

如果您继承的控件来自 DLL 而不仅仅是解决方案中的另一个类,那么您的设计器将正确呈现继承的控件。我的猜测是 VS 设计视图需要 DLL 来绘制控件。可能还有其他方法可以解决这个问题。

于 2008-12-18T16:54:19.203 回答