2012-10-19 159 views
2

我想從派生的用戶控件派生一個控件,但是用xaml解決它有問題。但是,首先是簡單的情況。我有一個庫MyControls.dll。在這個,我有一個基於「用戶控件」的.cs文件中的控件,如wpf從派生的控件派生

public class MyUserControl : UserControl { ... } 

沒問題。現在,我想創建源於此第二(視覺)控制......所以,我做了這個相同的MyControls.dll庫調用NewFromMyUserControl.xaml.cs和NewFromMyUserControl.cs分別新用戶控件,如

public partial class NewFromMyUserControl : MyUserControl { ... } 

現在,在XAML中,我有...

<mylib:MyUserControl x:Class="MyControls.SubFolder1.NewFromMyUserControl" 
     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:mylib ="clr-namespace:MyControls" (blah blah) /> 
</mylib:MyUserControl> 

這工作沒有任何問題。並且爲了簡單起見,在「MyUserControl」或「NewFromMyUserControl」類中沒有實際的代碼......只是測試派生實現。

現在,問題。我有另一個庫「MyBaselineControls.dll」具有實際的用戶控件我想從...等來源的

public class MyBaselineUserControl : UserControl { ... } 

和現在,我想改變「的MyUserControl」從這個其他如

衍生
from 
    public class MyUserControl : UserControl { ... } 
to 
    using MyBaselineControls; 
    public class MyUserControl : MyBaselineUserControl { ... } 

只要這一條線改變,編譯器失敗,說明...

錯誤2「MyControls.MyUserControl」不能是因爲它使用了XAML定義的XAML文件的根。第1行位置19. ...等等等等

是否存在衍生自另一個庫的問題?

謝謝

+0

看來這不支持,基於這個問題,它是重複的:http:// stackoverflow。com/questions/10873008/myusercontrol-can-the-root-of-a-xaml-file-because-it-defined-using-xam –

回答

3

您不能派生自具有XAML定義的用戶控件。只要你沒有在你的基類中定義XAML,你就會沒事的。有關您的錯誤的具體信息可以在here找到。

解決此問題的一種方法是從Control(或衍生自Control而不是UserControl)的另一個類派生併爲您的基本控制和派生控件定義控件模板。 This page正確地解釋了從ControlUserControl繼承時您可以執行的操作,以及在決定您想從哪個位置決定要考慮的事項。


編輯

既然你說這兩個MyBaselineUserControlMyUserControl不定義任何XAML,事情應該工作。我自己嘗試過,沒有問題。

我建議你確保你的用戶控件的基礎實際上沒有XAML創建的,即,它們應該已經創建「添加 - >類」,而不是用「添加 - >用戶控制」。

+0

這就是要點......「MyBaselineControls」中的基類,和「MyUserControl」都只有代碼 - ...只有「NewFromMyUserControl」是第一個使用xaml的VISUAL控件..其他兩個不是。 – DRapp

+0

@DRapp請參閱我編輯的答案 –

+0

您是否在兩個獨立的類庫中創建它們?即:「MyBaseline」是一個類庫,「MyUserControl」在一秒鐘內,「NewFromMyUserControl」在相同第二個庫爲「MyUserControl」? – DRapp