Metro/Windows8 编译错误:LoadState() => 找不到合适的方法来覆盖
本文关键字:找不到 覆盖 方法 编译 Windows8 错误 LoadState Metro | 更新日期: 2023-09-27 18:36:08
我正在尝试在MSVS 11 Beta上使用Windows 8社区预览版通过Metro"Hello World"工作:
使用 C# 或 VB 创建你的第一个 Metro 风格应用
本教程要求您创建一些"模板"页面。 例如:
public sealed partial class SplitPage : WindowsBlogReader.Common.LayoutAwarePage
{
...
本教程还要求您重写其中一些页面的 LoadState() 方法:
protected override void LoadState(Object navigationParameter, Dictionary<String, Object> pageState)
{
// TODO: Assign a bindable group to this.DefaultViewModel["Group"]
// TODO: Assign a collection of bindable items to this.DefaultViewModel["Items"]
FeedData feedData = navigationParameter as FeedData;
if (feedData != null)
{
this.DefaultViewModel["Feed"] = feedData;
this.DefaultViewModel["Items"] = feedData.Items;
}
...
问题是这会因一个令人讨厌的编译错误而死亡:
LoadState(object,System.Collections.Generic.Dictionary<string,object>): no suitable method found to override.
在自动生成的模板代码中没有"页面状态管理"区域和默认的"LoadState()"方法(SplitPage.xaml.cs);教程说应该有。
问:LoadState() 现在是否在较新版本的 Metro SDK 中被弃用?
问:我是否需要在 .xaml 文件中执行一些"神奇"操作才能完成此操作?
问:这到底是怎么回事?
非常感谢你,如果有人有任何建议!教程还要求您覆盖其中一些页面的 LoadState() 方法:
我也遇到了同样的问题,后来我在 SplitPage.xaml 的方法 OnNavigatedTo() 中使用相同的代码.cs如下所示,它工作正常。
/// <summary>
/// Invoked when this page is about to be displayed in a Frame.
/// </summary>
/// <param name="e">Event data that describes how this page was reached. The
/// Parameter property provides the group to be displayed.</param>
protected override void OnNavigatedTo(NavigationEventArgs e)
{
// TODO: Assign a bindable group to this.DefaultViewModel["Group"]
// TODO: Assign a collection of bindable items to this.DefaultViewModel["Items"]
FeedData feedData = e.Parameter as FeedData;
if (feedData != null)
{
this.DefaultViewModel["Feed"] = feedData;
this.DefaultViewModel["Items"] = feedData.Items;
}
// Select the first item automatically unless logical page navigation is
// being used (see the logical page navigation #region below.)
if (!this.UsingLogicalPageNavigation()) this.itemsViewSource.View.MoveCurrentToFirst();
}
我做的一个小更改是我使用了 e.Parameter 而不是 navigationParameter 。
您是否移植了旧的 Metro 应用程序,忘记更新 Common 文件夹中的 LayOutAware 页面?