2012-09-08 75 views
1

我有一個名爲BIFUserControl的類,該類繼承自UserControl類。現在我正在設計一個名爲BIFText的新用戶控件,它繼承自BIFUserControl類。所以,我改變稱爲BIFText.xaml 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.

有人可以幫我解決這個錯誤。提前致謝。

+0

您的'BIFUserControl'是否也有一些xaml文件用於其模板,或者您只從UserControl子類? –

+0

是的'BIFUserControl'類也有它自己的XAML文件。 –

回答

4

錯誤表示BaseInputFramework.BaseWidgets.BIFUserControl不能作爲XAML文件的根,因爲它是使用XAML定義的。只有使用XAML文件定義的元素纔可以是根元素。請參閱這些鏈接 - Cannot define root elementInheriting from UserControl

+1

是的,你正在寫,我很快做了一個沒有XAML文件的新的Base UserControl類。之後,上面的代碼適用於我。謝謝 ! –

1

UserControls通過將Content設置爲您在XAML中定義的內容來工作,這可能是您無法繼承的原因:基類的內容將被覆蓋。

如果您不介意完全替換內容,則可以使用自定義控件並定義Template