2012-11-23 49 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

這對我來說只有一個小小的補充;我使用卸載事件來完成一些工作,並且我需要在顯示文件選取器之前從事件中卸載我的卸載委託,然後在文件選取器退出後再附加到事件。我希望我能夠將你的答案標記爲正確,因爲它甚至使我的彈出窗口滾動到與以前相同的位置。 這可能是唯一的選擇。沒有別的東西可以爲我工作。 –