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/