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()方法也无效。
答案 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代码。