2012-11-23 51 views
4

我已经创建了一个自定义AlarmSettingsPane的设置的魅力,它允许用户给时间,并选择闹钟铃声的音频文件。所以我实现了文件选择器在设置的魅力。当我点击文件选择器按钮,它需要我到一个新的全屏幕,我可以选择我的文件,但是当我选择一个文件并打开它时,我被引导到我的主屏幕但设置魅力弹出窗口被关闭。我怎样才能保持AlarmSettingsPane弹出窗口的状态并防止它以编程方式关闭?与设置相似,弹出窗口应该包含与选择文件之前相同的关于闹钟的imfo。如何保持自定义设置Charm展开式以编程方式打开?

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."; 
     } 
    }  

回答

2

查看是否弹出/弹出的IsLightDismissEnabled属性设置为false会做的伎俩代码。

+0

对于后期回复感到遗憾,但没有lightoutmiss属性的flyout.Using callisto控件我创建了一个自定义弹出和Callisto.Controls.SettingsFlyout没有任何IsLightDismissEnabled属性。有什么建议么? – Bitsian

+0

更改父级弹出窗口的IsLightDismissEnabled属性不起作用。这不是一个关闭弹出设置的轻松解除操作;它与文件选择器有关。 –

0

您可以尝试模仿PLM(进程生命周期管理)代码,以便无论您的AlarmSettingsPane何时卸载,都可以保存页面的内容,并在每次加载时重新构建控件的状态。 你可以找到在VS拆分或网格模板layoutawarepage一些示例代码..

问候,

3

我所做的就是抢在选择器之前UserControl.Parent的拷贝被调用,并在本地存储它函数,这可以防止UI处理程序将其标记为收集,并且在选择器返回后,然后将父级IsOpen选回true。

例如:

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

    Picker Code 

    popup.IsOpen = true; 
} 

它可能不是最好的书,但它确实工作得很好。

+0

这对我来说只有一个小小的补充;我使用卸载事件来完成一些工作,并且我需要在显示文件选取器之前从事件中卸载我的卸载委托,然后在文件选取器退出后再附加到事件。我希望我能够将你的答案标记为正确,因为它甚至使我的弹出窗口滚动到与以前相同的位置。 这可能是唯一的选择。没有别的东西可以为我工作。 –