【问题标题】:How to keep the custom Settings Charm flyout open programmatically?如何以编程方式保持自定义设置魅力弹出窗口打开?
【发布时间】:2012-11-23 11:52:18
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

    例如:

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

    它可能不是书上最好的,但它确实很好用。

    【讨论】:

    • 这对我有用,只需添加一点;我使用卸载事件来做一些工作,我需要在显示文件选择器之前将我的卸载委托与事件分离,然后在文件选择器消失后附加到事件。我希望我可以将您的答案标记为正确,因为它甚至使我的弹出窗口滚动到与以前相同的位置。这可能是唯一的选择。似乎没有其他东西对我有用。
    【解决方案2】:

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

    【讨论】:

    • 抱歉回复晚了,但弹出窗口没有灯光关闭属性。使用 callisto 控件我创建了一个自定义弹出窗口,而 Callisto.Controls.SettingsFlyout 没有任何 IsLightDismissEnabled 属性。有什么建议吗?
    • 更改父弹出窗口的 IsLightDismissEnabled 属性不起作用。这不是关闭设置弹出窗口的轻微关闭操作;它与文件选择器有关。
    【解决方案3】:

    您可以尝试模仿 PLM(流程生命周期管理)代码,以便在卸载 AlarmSettingsPane 时保存页面内容,并在重新加载时重建控件的状态。 您可以在 VS Split 或 Grid 模板的 layoutawarepage 中找到一些示例代码..

    问候,

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多