C# Windows 8.1如何修复此过时代码?
我已将我的项目从windows 8.0升级到windows 8.1,并收到一些关于过时代码的警告。有些是我修好的,有些不是 这是我无法修复且找不到任何信息的上次警告的图像 所有的警告都指向同一个方法,它说它已经过时了,我应该怎么做才能得到不过时的代码 代码如下:C# Windows 8.1如何修复此过时代码?,c#,windows,windows-store-apps,obsolete,C#,Windows,Windows Store Apps,Obsolete,我已将我的项目从windows 8.0升级到windows 8.1,并收到一些关于过时代码的警告。有些是我修好的,有些不是 这是我无法修复且找不到任何信息的上次警告的图像 所有的警告都指向同一个方法,它说它已经过时了,我应该怎么做才能得到不过时的代码 代码如下: 警告2号 /// <summary> /// Translates <see cref="ApplicationViewState" /> values into strings for visual stat
/// <summary>
/// Translates <see cref="ApplicationViewState" /> values into strings for visual state
/// management within the page. The default implementation uses the names of enum values.
/// Subclasses may override this method to control the mapping scheme used.
/// </summary>
/// <param name="viewState">View state for which a visual state is desired.</param>
/// <returns>Visual state name used to drive the
/// <see cref="VisualStateManager" /></returns>
/// <seealso cref="InvalidateVisualState" />
protected virtual string DetermineVisualState(ApplicationViewState viewState)
{
return viewState.ToString();
}
string visualState = DetermineVisualState(ApplicationView.Value);
受保护的覆盖无效OnNavigatedTo(NavigationEventArgs e)
{
基地。导航到(e);
this.Loaded+=PageLoaded;
this.unload+=pageunload;
}
private void PageUnload(对象发送方,RoutedEventArgs e)
{
Window.Current.SizeChanged-=Window\u SizeChanged;
}
private void PageLoaded(对象发送方,RoutedEventArgs e)
{
Window.Current.SizeChanged+=Window\u SizeChanged;
}
私有无效窗口大小更改(对象发送方,Windows.UI.Core.WindowSizeChangedEventArgs e)
{
如果(e.尺寸.宽度e.尺寸.宽度)
{
//VisualStateManager.GoToState(此、状态、状态、转换);
}
其他的
{
//VisualStateManager.GoToState(此、状态、状态、转换);
}
}
打开LayoutWarePage并将DetermineVisualState方法更改为no
不再依赖ApplicationViewState,而是依赖于
窗口大小。例如,您可以在
您的应用程序窗口宽度小于500px,并且在
它大于500像素。由于该方法是虚拟的,因此其设计目的是
在需要时在每个页面中被覆盖(在
拆分页)。如果您的布局和
视觉状态不同。只需确保重命名上的可视状态即可
您的每个页面都需要匹配这些新字符串
你看到了吗?有什么帮助吗?是的,这是我看到的第一个示例,没有帮助,因为它没有使用LayoutWarePageThat's right-正如它所说的“使用Windows 8.1预览时,LayoutWarePage将从默认的Windows应用商店应用程序模板中删除”-因此本文提供了一个可能的替代方案。这对你来说不可能吗?也许,这可能会有帮助,但我在所有页面中都使用了LayoutWarePage,它是否也一样?我可以不修改太多代码来获得相同的结果吗?问题是,如果链接曾经消失(确实发生过),那么答案是无用的。最好在此处包含链接摘要,这样就不必转到其他站点。顺便说一句,反对票不是我的,它很可能来自于关于“没问题”的讨论,谢谢你建议我加入summary:)那篇MSDN文章的问题在于“我们建议你停止使用LayoutAwarePage类,直接从Page类继承这些类。”它忽略了在LayoutAwarePage中有很多其他模板代码用于导航、导航状态和默认视图模型。
string visualState = DetermineVisualState(ApplicationView.Value);
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
this.Loaded += PageLoaded;
this.Unloaded += PageUnloaded;
}
private void PageUnloaded(object sender, RoutedEventArgs e)
{
Window.Current.SizeChanged -= Window_SizeChanged;
}
private void PageLoaded(object sender, RoutedEventArgs e)
{
Window.Current.SizeChanged += Window_SizeChanged;
}
private void Window_SizeChanged(object sender, Windows.UI.Core.WindowSizeChangedEventArgs e)
{
if (e.Size.Width <= 500)
{
//VisualStateManager.GoToState(this, state.State, transitions);
}
else if (e.Size.Height > e.Size.Width)
{
//VisualStateManager.GoToState(this, state.State, transitions);
}
else
{
//VisualStateManager.GoToState(this, state.State, transitions);
}
}