(這個問題的my other question on this topic這是一個有點複雜,但我真的想知道爲什麼,這並不工作,所以這裏有一個更直接的例子細化)爲什麼您可以繼承項目邊界的類而不是其附加的XAML?
什麼,我想做的事:創建一個項目中的簡單類(無XAML),在另一個項目中繼承WPF UserControl(帶有XAML)。
這裏是我的主要項目我的繼承類:
EmployeeEditor.cs:
using System.Windows.Controls;
using System.Windows;
using System.Windows.Media;
using CoreApp;
namespace TestInheritUserControl234
{
class EmployeeEditor : BaseEditor
{
public EmployeeEditor()
{
TextBlock tb = new TextBlock();
tb.Text = "This was added in EmployeeEditor";
tb.Foreground = new SolidColorBrush(Colors.Blue);
EditorContent.Children.Add(tb);
}
}
}
這裏是我的第二個項目我的基類,注意到它X:名稱=「EditorContent」:
BaseEditor.xaml:
個<UserControl x:Class="CoreApp.BaseEditor"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<StackPanel x:Name="EditorContent" Margin="5">
<TextBlock x:Name="TheMessage" Text="This was added in BaseEditor XAML."/>
</StackPanel>
</UserControl>
BaseEditor.xaml.cs:
using System.Windows.Controls;
namespace CoreApp
{
public partial class BaseEditor : UserControl
{
public BaseEditor()
{
InitializeComponent();
TextBlock tb = new TextBlock();
tb.Text = "This was added in BaseEditor code-behind.";
EditorContent.Children.Add(tb);
}
}
}
問題是這樣的程序運行時,我得到的錯誤'EditorContent' 並不在當前的背景下存在的名稱。
但是,如果所有類都在一個項目,它運行良好。
爲什麼你可以繼承一個超出項目邊界的類,而不是它附加的XAML?
如果我這樣做,它告訴我:「組件‘TestInheritUserControl234.CustomerEditor’不具有可識別的資源」/CoreApp;組件/baseeditor.xaml「(ORIGINAL:」Die Komponente「TestInheritUserControl234.CustomerEditor」verfügtnichtübereine Ressource,die vom URI「/CoreApp;component/baseeditor.xaml」identifiziert wird。「) – 2009-09-30 15:46:18
啊,這一定是爲什麼新的WPF CrystalReportsViewer不能被繼承。 – jpierson 2010-11-18 19:43:19