如何以编程方式打开自定义设置魅力弹出按钮?

我在设置超级按钮中创建了一个自定义的AlarmSettingsPane,允许用户给出时间并选择音频文件作为闹钟铃声。 所以我在设置的魅力中实现了文件选择器。当我点击文件选择器按钮时,它将我带到一个新的全屏我可以选择我的文件,但是当我选择一个文件并打开它时,我被定向到我的主屏幕但设置魅力flyout关闭。 如何保留AlarmSettingsPane弹出窗口的状态并阻止它以编程方式关闭? 与设置一样,弹出窗口应包含与我选择文件之前相同的警报。

SettingsPane.Show()打开设置超级按钮,但不会转到我在标准设置弹出窗口内创建的闹钟设置。

如果您有任何想法,请告诉我。 谢谢

这是我的文件选择器按钮单击事件的代码

private async void PickAFileButton_Click(object sender, RoutedEventArgs e) { FileOpenPicker openPicker = new FileOpenPicker(); openPicker.ViewMode = PickerViewMode.List; openPicker.SuggestedStartLocation = PickerLocationId.MusicLibrary; openPicker.FileTypeFilter.Add(".mp3"); openPicker.FileTypeFilter.Add(".wma"); StorageFile file = await openPicker.PickSingleFileAsync(); if (file != null) { // Application now has read/write access to the picked file CustomSound.Text = file.Name; } else { CustomSound.Text = "Operation cancelled."; } } 

我所做的是在调用Picker之前获取UserControl.Parent的副本并将其存储在函数本地,这可以防止UI处理程序将其标记为集合,并在选择器返回后,然后选择父IsOpen返回true 。

例如:

 private function () { Popup popup = this.Parent as Popup; Picker Code popup.IsOpen = true; } 

这本书可能不是最好的,但它确实运作良好。

看看将弹出/弹出窗口的IsLightDismissEnabled属性设置为false是否可以解决问题。

您可以尝试模拟PLM(流程生命周期管理)代码,这样无论何时卸载AlarmSettingsPane,您都可以保存页面内容,无论何时加载回来,您都会重新构建Control的状态。 你可以在VS Split或Grid模板的layoutawarepage中找到一些示例代码。

问候,