C# 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

我已将我的项目从windows 8.0升级到windows 8.1,并收到一些关于过时代码的警告。有些是我修好的,有些不是

这是我无法修复且找不到任何信息的上次警告的图像

所有的警告都指向同一个方法,它说它已经过时了,我应该怎么做才能得到不过时的代码

代码如下:

  • 警告2号

    /// <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);
    
  • 上面所有的代码,调用DetermineVisualState方法,它提供了直接查询窗口布局大小的功能,但这意味着什么

    注意:这是LayoutWarePage,所以我没有在这里写任何代码,这是Windows 8.0实现

    如有任何帮助,我们将不胜感激

    来自MSDN:

    在Windows 8中,Microsoft Visual Studio模板生成 LayoutWarePage类来管理基于 ApplicationViewState。在Windows 8.1中,ApplicationViewState为 已弃用和LayoutWarePage不再包含在可视化视图中 Windows应用商店应用程序的Studio模板。继续使用 LayoutWarePage可能会破坏你的应用程序。要解决此问题,请将视图重写为 适应新的最小视图状态,并基于 窗口大小。如果您将应用程序更新为不同的大小,则必须 处理Window.Current和Window.SizeChanged事件以适应 将应用程序的UI设置为新大小。我们建议您停止使用 LayoutWarePage,并直接从Page类继承类。 以下是如何停止使用LayoutWarePage:

    受保护的覆盖无效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);
         }
     }