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

时间:2012-11-23 11:52:19

标签: c# xaml windows-8 windows-runtime

我在设置超级按钮中创建了一个自定义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.";
        }
    }      

3 个答案:

答案 0 :(得分:3)

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

例如:

private function ()
{
    Popup popup = this.Parent as Popup;

    Picker Code

    popup.IsOpen = true;
}

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

答案 1 :(得分:2)

看看将弹出窗口/弹出窗口的IsLightDismissEnabled属性设置为false是否有效。

答案 2 :(得分:0)

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

的问候,