XAML文件中的不同基类

时间:2012-09-08 16:49:42

标签: c# wpf xaml

我有一个名为BIFUserControl的类,它继承自UserControl类。现在我正在设计一个名为BIFText的新用户控件,它继承自BIFUserControl类。所以,我更改了名为BIFText.xaml的XAML文件,如下所示:

<base:BIFUserControl 
              xmlns:base="clr-namespace:BaseInputFramework.BaseWidgets;assembly=BaseInputFramework"
              x:Class="BIFWidgetLibrary.Text.BIFText"
              xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

              xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 

              xmlns:mp="clr-namespace:Microsoft.Multipoint.Sdk.Controls;assembly=Microsoft.Multipoint.Sdk.Controls"
              xmlns:utils="clr-namespace:BaseInputFramework.BaseWidgets.Utils;assembly=BaseInputFramework"

              mc:Ignorable="d" 
              d:DesignHeight="150" d:DesignWidth="150">
     <Grid>


     </Grid> </base:BIFUserControl>

然后我按如下方式更改了我的BIFText.xaml.cs文件:

 namespace BIFWidgetLibrary.Text {
     public partial class BIFText : BIFUserControl
     {
         public BIFText()
         {
             InitializeComponent();
         }
     } }

但是现在当我尝试构建项目时,收到以下错误消息: 'BaseInputFramework.BaseWidgets.BIFUserControl' cannot be the root of a XAML file because it was defined using XAML. Line 2 Position 14.

有人可以帮我解决这个错误。提前谢谢。

2 个答案:

答案 0 :(得分:4)

错误表明BaseInputFramework.BaseWidgets.BIFUserControl不能是XAML文件的根,因为它是使用XAML定义的。只有未使用XAML文件定义的元素才能是根元素。请参阅以下链接 - Cannot define root elementInheriting from UserControl

答案 1 :(得分:1)

UserControls通过将Content设置为您在XAML中定义的内容来工作,这可能是您无法继承的原因:基类的内容将被覆盖。

如果您不介意完全替换内容,可以使用自定义控件并定义Template