Windows.UI.ViewManagement.ApplicationView.TryUnsnap()已过时

时间:2014-06-30 06:10:45

标签: c# windows xaml windows-store-apps

bool isSnapped;
    async void EnsureUnsnapped()
    {
        // FilePicker APIs will not work if the application is in 
        //a snapped state
        // If an app wants to show a FilePicker while snapped, it
        //must attempt to unsnap first
        bool unsnapped = ((Windows.UI.ViewManagement.ApplicationView.Value != Windows.UI.ViewManagement.ApplicationViewState.Snapped) || Windows.UI.ViewManagement.ApplicationView.TryUnsnap());
        if (!unsnapped)
        {
            MessageDialog msg = new MessageDialog("Cannot open file picker in snapped view. ");
            await msg.ShowAsync();
            isSnapped = true;

        }
        else
        {
            isSnapped = false;
        }
    }
    string GetNotes()
    {
        string response = "";
        foreach (var note in NotesCollection.Notes)
        {
            response += "Title ->  " + note.Title + Environment.NewLine + "Content -> " + note.Content + Environment.NewLine + "*****************************" + Environment.NewLine;
        }
        return response;
    }
    private async void bttnSave_Click(object sender, RoutedEventArgs e)
    {
        EnsureUnsnapped();
        if (!isSnapped)
        {
            if (NotesCollection.Notes.Count > 0)
            {
                try
                {
                    Windows.Storage.StorageFolder documentFolder = Windows.Storage.KnownFolders.DocumentsLibrary;

                    var file = await documentFolder.CreateFileAsync("Notes.txt", Windows.Storage.CreationCollisionOption.ReplaceExisting);

                    if (file != null)
                    {
                        await Windows.Storage.FileIO.WriteTextAsync(file, GetNotes());
                        MessageDialog msg = new MessageDialog("Notes are saved in the Documents Library in a file named Notes.txt");
                        await msg.ShowAsync();
                    }
                }
                catch
                {

                }
            }
            else
            {
                MessageDialog msg = new MessageDialog("No notes exists to save.");
                await msg.ShowAsync();
            }

        }

    }

代码已从Windows 8重新定位到Windows 8.1。执行Windows应用商店时,我收到了以下警告:

'Windows.UI.ViewManagement.ApplicationView.TryUnsnap()'已过时:'Windows 8.1之后的版本可能会更改或不能使用TryUnsnap。从Windows 8.1开始,可以不断调整应用程序的大小,但无法对其进行快照。“

'Windows.UI.ViewManagement.ApplicationView.Value'已过时:'Windows 8.1之后的版本可能会更改或不可用的值。相反,直接查询窗口布局大小。'

'Windows.UI.ViewManagement.ApplicationViewState'已过时:'Windows 8.1之后的版本可能会更改或不可用ApplicationViewState。相反,直接查询窗口布局大小。'

如何解决此警告消息?因为bttnSave_Click()方法也无效。

1 个答案:

答案 0 :(得分:2)

您可以通过不使用这些API来解决警告。 Windows 8.1通过允许变量大小而不是固定的捕捉/填充/全屏视图来改进Windows 8视图模型。这里的关键是您在清单中设置最小宽度。默认情况下,该宽度为500px而不是320px快照视图。如果你想支持狭窄(以前的#34; snap")视图,那么你可以在清单中指定最小宽度为320px,但是否则,Windows 8.1不允许将应用程序的大小设置得更小

在您的方案中,您检查快照视图并尝试取消隐藏的原因是允许文件选择器工作。如果您在Windows 8.1的清单中保留500px最小宽度,那么您根本不需要任何这些检查,因为文件选择器将以500px工作。

如果你支持低于500px,那么你需要进行类似的检查,但不是检查旧的ApplicationViewState值,而是直接检查视图的宽度。然后你可以在适当的时候使用相同的逻辑来调用文件选择器,只是没有unsnap选项,因为你真的只想告诉用户使视图更宽。但是,如果你没有理由支持320px,那么请将清单保留在500px并锁定所有的unnap代码。