こんにちは私はここにある情報に基づいていくつかのサブクラス化されたユーザーコントロールを作成しました; http://csharpsimplified.wordpress.com/2011/09/21/subclassing-wpf-user-control/しかし、問題が発生しています。
これが、TestUserControlプロジェクトで開催された私の基本クラスです。
namespace TestUserControl
{
public class BaseDataGridControl : UserControl
{
protected BaseDataGridControl()
{
}
}
}
これが私の具体的なクラスです;
<view:BaseDataGridControl x:Class="TestUserControl.Concrete"
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:view="clr-namespace:TestUserControl"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<Button Height="20" Width="60" Margin="12,12,228,268" />
</Grid>
</view:BaseDataGridControl>
そして、この制御コードの背後は次のようになります;
public partial class Concrete : BaseDataGridControl
{
public Concrete()
{
InitializeComponent();
}
}
同じTestUserControlプロジェクトのウィンドウに具象クラスを問題なくドロップできます。
<Window x:Class="TestUserControl.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" xmlns:my="clr-namespace:TestUserControl">
<Grid>
<my:Concrete HorizontalAlignment="Left" Margin="88,39,0,0" x:Name="concrete1" VerticalAlignment="Top" />
</Grid>
</Window>
これはすべて正常に機能します。
問題は、別のプロジェクトで具象クラスを使おうとしたときです。
別のプロジェクト(WPFApplication1)を作成し、具象クラスに基づいてクラスを作成するとします。
namespace WpfApplication1
{
public class SubClass : Concrete
{
}
}
これをWPFApplication1プロジェクトのウィンドウにドロップしようとすると、;が表示されます。
「コレクションが変更されたため、列挙子は無効です」
XAML経由で追加しようとすると、
'コンポーネント'WpfApplication1.SubClass'には、URI'/TestUserControl;component/concrete.xaml'で識別されるリソースがありません。
エラーメッセージ。
WPFApplication1プロジェクトには、TestUserControlプロジェクトへの参照があります。
ユーザーコントロールが定義されたプロジェクト内でこれが機能する理由を誰かが知っていますが、別のプロジェクトでサブクラス化しようとするとすぐに失敗しますか?
私はこれをVS2010とVS11ベータで試しましたが、同じ悪い結果になりました。
私はリフレクションを使用しておらず、クラスのコンストラクターのコレクションにアクセスしていません。コードはここに表示されているものです。
この問題を実証するテストプロジェクトがあります。
ありがとう ....