Я сейчас работаю с этим точным кодом:
public class ViewModelAwarePage<T> : Page
{
}
public class BaseMainMenuView
: ViewModelAwarePage<String>
{
}
public sealed partial class MainMenuView
: BaseMainMenuView
{
public MainMenuView()
{
this.InitializeComponent();
}
}
И xaml:
<local:BaseMainMenuView
x:Name="pageRoot"
x:Class="Tutorial.UI.WinRT.Views.MainMenuView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Tutorial.UI.WinRT.Views"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid Background="{StaticResource ApplicationPageBackgroundBrush}">
</Grid>
</local:BaseMainMenuView>
Когда я пытаюсь создать эту страницу, я получаю сообщение об ошибке «BaseMainMenuView не поддерживает Grid как контент»
Windows.UI.Xaml.Markup.XamlParseException не было обработано кодом пользователя
HResult = -2144665590 Сообщение = BaseMainMenuView не поддерживает Grid
как содержание. [Строка: 12 Позиция: 22] Source = "" StackTrace:
в Windows.UI.Xaml.Application.LoadComponent (объектный компонент, Uri resourceLocator, ComponentResourceLocation
componentResourceLocation)
в Tutorial.UI.WinRT.Views.MainMenuView.InitializeComponent () в c: \ Projects \ Misc \ MvvmCross \ Sample -
Учебное пособие \ Tutorial \ Tutorial.UI.WinRT \ OBJ \ x86 \ Debug \ Views \ MainMenuView.g.i.cs: линия
34
в Tutorial.UI.WinRT.Views.MainMenuView..ctor () в c: \ Projects \ Misc \ MvvmCross \ Sample -
Учебник \ Учебник \ Tutorial.UI.WinRT \ Views \ MainMenuView.xaml.cs: строка 40
в Tutorial.UI.WinRT.XamlTypeInfo.XamlTypeInfoProvider.Activate_3_MainMenuView ()
в c: \ Projects \ Misc \ MvvmCross \ Sample -
Учебное пособие \ Tutorial \ Tutorial.UI.WinRT \ OBJ \ x86 \ Debug \ XamlTypeInfo.g.cs: линия
122
в Tutorial.UI.WinRT.XamlTypeInfo.XamlUserType.ActivateInstance () в
c: \ Projects \ Misc \ MvvmCross \ Sample -
Учебное пособие \ Tutorial \ Tutorial.UI.WinRT \ OBJ \ x86 \ Debug \ XamlTypeInfo.g.cs: линия
314 InnerException:
Если я попытаюсь уменьшить код до:
public class ViewModelAwarePage : Page
{
}
public class BaseMainMenuView
: ViewModelAwarePage
{
}
public sealed partial class MainMenuView
: BaseMainMenuView
{
public MainMenuView()
{
this.InitializeComponent();
}
}
тогда страница загружается нормально.
Я вообще не понимаю исключения - все найденные мной хиты Bing / Google предполагают проблемы с Silverlight 2.
Может кто-нибудь объяснить ошибку - кто-нибудь может предложить идеи о том, как я мог бы унаследовать от общей страницы?