【问题标题】:wpf user control base class problemwpf用户控件基类问题
【发布时间】:2009-10-01 07:31:47
【问题描述】:

我是 WPF 新手并创建了一个 WPF 用户控件库

我添加了一个看起来像这样的 Base 类

public class TControl : UserControl
{
}

并希望我的所有控件都继承自它。

我有一个名为 Notification 的控件,看起来像

public partial class Notification : TControl
{
    public Notification()
    {
        InitializeComponent();
    }

工作正常,除非我重新编译定义 InitializeComponent() 的隐藏部分类重新生成并继承自 System.Windows.Controls.UserControl

这给了我一个

'Twac.RealBoss.UserControls.Notification'的部分声明不能指定不同的基类

错误,

是否有强制生成的类从我的基类继承?

【问题讨论】:

    标签: wpf inheritance user-controls


    【解决方案1】:

    您的 XAML 文件可能包含:

    <UserControl x:Class="YourNamespace.Notification" .... >
    

    尝试将其更改为:

    <Whatever:TControl x:Class="YourNamespace.Notification" xmlns:Whatever="clr-namespace:YourNamespace" />
    

    您遇到的错误是因为在 XAML 中使用 UserControl 告诉编译器生成从 UserControl 继承的部分类,而不是从您的类继承。

    【讨论】:

      【解决方案2】:

      你可以完全去掉“:TControl”:

      public partial class Notification : TControl
      {
      }
      

      然后写:

      public partial class Notification
      {
      }
      

      相反,正如 Paul 所写,因为基类是在 XAML 部分中定义的。

      【讨论】:

      • 绝对正确,我把它留在那里但是提醒我它不只是继承自用户控件。 TControl 还没有做任何事情,但它可能在未来
      • 另外,我不会使用匈牙利符号(TControl,而不是 Control),与 Delphi 不同,在 C#(或 Java 或 C++)中不推荐使用它。在 Delphi 中,它只是必需的,因为该语言不区分大小写。
      猜你喜欢
      • 2010-12-09
      • 1970-01-01
      • 1970-01-01
      • 2011-04-07
      • 2010-12-15
      • 1970-01-01
      • 2011-04-20
      • 1970-01-01
      相关资源
      最近更新 更多