c# - Windows.UI.ViewManagement.ApplicationView.TryUnsnap() 已过时

标签 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()”已过时:“TryUnsnap 可能会在 Windows 8.1 之后的版本中更改或不可用。从 Windows 8.1 开始,应用程序可以连续调整大小,但不能对齐。'

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

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

如何解决此警告消息?由于 bttnSave_Click() 方法也不起作用。

最佳答案

您可以通过不使用这些 API 来解决警告。 Windows 8.1 在 Windows 8 View 模型的基础上进行了改进,允许可变大小而不是固定的捕捉/填充/全屏 View 。这里的关键是您在 list 中设置最小宽度。默认情况下,该宽度为 500 像素,而不是 320 像素的快照 View 。如果您想支持窄(以前的“对齐”) View ,那么您可以在 list 中指定最小宽度为 320px,但否则,Windows 8.1 将不允许应用程序尺寸变小。

在您的场景中,您检查快照 View 并尝试取消快照的原因是为了允许文件选择器工作。如果您在 Windows 8.1 的 list 中保留 500 像素的最小宽度,则根本不需要任何这些检查,因为文件选择器将在 500 像素下工作。

如果您支持低于 500px,那么您需要执行类似的检查,但您只需直接检查 View 的宽度,而不是检查旧的 ApplicationViewState 值。然后,您可以在适当的时候使用相同的逻辑来调用文件选择器,只是没有取消对齐选项,因为您实际上只是想告诉用户使 View 更宽。但同样,如果您没有其他理由支持 320px,则将 list 保留在 500px,并删除所有取消对齐代码。

关于c# - Windows.UI.ViewManagement.ApplicationView.TryUnsnap() 已过时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24483851/

相关文章:

c# - 如何将相同的 VisualState 应用于多个控件?

c# - 如何读取 Winform 上的键盘输入?

c# - 从属性的 getter 调用方法

c# - 如何在 UWP 中创建 Tab Header Pivot 控件?

windows - 如何在自动热键中使用菜单窗口键?

windows - 批处理文件,检查字符串是否包含另一个具有特殊字符的字符串

javascript - 使用 javascript 循环访问 ASP.NET 单选按钮列表以获取选定的值和文本

windows - 在Windows上解压缩.tar.gz文件

wpf - 使用 XAML 资源减少重复

c# - WPF 样式,创建要在 XAML 中跨应用程序使用的样式页面