私のユーザー定義クラスから継承するXAMLページがあります。
<xpap:GenericListPage
x:Class="my.View.ListPage"
xmlns:xpap="clr-namespace:my.View.Generic" ... />
当初、XAMLページに汎用基本クラスを使用したかったのですが、それは不可能でした(少なくとも、WP7では; WP8ではページに汎用基本クラスを使用できますか?)。したがって、私はこの回避策に行き着きました(ExtendedPhoneApplicationPageはPhoneApplicationPageから継承し、ListPageなどのすべてのページがcommenに持つべき追加の機能/動作を追加します):
namespace my.View
{
namespace Generic
{
public partial class GenericListPage :
ExtendedPhoneApplicationPage<ListViewModel>
{
...
}
}
public partial class ListPage : Generic.GenericListPage
{
...
}
public class ExtendedPhoneApplicationPage<T> :
PhoneApplicationPage where T : class, IViewModelBase
{
...
}
}
これは、WP8 SDKをインストールするまで(私が覚えている限り)、すべて一緒に正常に機能しました。デザイナが「無効なマークアップ」と言い、「名前「GenericListPage」が名前空間「clr-namespace:my.View.Generic」に存在しません」というエラーがあります。
奇妙な部分は、ソリューションがコンパイルされ、エミュレーターにデプロイできることです。エラーを解消する理由や方法を知っている人はいますか?