在 Silverlight5 中添加 SaveFileDialog 的 DefaultFileName 属性时更改安全警告提示中的默认消息

Posted

技术标签:

【中文标题】在 Silverlight5 中添加 SaveFileDialog 的 DefaultFileName 属性时更改安全警告提示中的默认消息【英文标题】:Change the default message in the Security warning prompt when adding the DefaultFileName property of SaveFileDialog in Silverlight5 【发布时间】:2015-06-19 09:49:04 【问题描述】:

我正在使用 Silverlight5,我只需要从我的应用程序中保存一个文件。当用户单击保存按钮时,它应该使用默认名称打开 SaveFileDialog。 使用以下代码:

private void Button_Click(object sender, RoutedEventArgs e)
    
        SaveFileDialog dialog = new SaveFileDialog
        
            DefaultExt = "xls",
            Filter =
                String.Format("1 files (*.0)|*.0|All files (*.*)|*.*", "xls", "Excel"
                              ),
            FilterIndex = 1,
            DefaultFileName = "Test", 

        ;
        dialog.ShowDialog();
    

但问题是,当我们将 DefaultFileName 属性添加到 SaveFileDialog 时,它会自动显示一个确认消息窗口。我需要自定义打开 SaveFileDialog 时显示的 MessageBox 中的消息。

希望你们中的一些人可能会遇到这个问题,请指导我克服这个问题。

请在下面找到图片

【问题讨论】:

【参考方案1】:

你不能。这个消息是由插件原生实现生成的,所以如果你想覆盖这个消息;您需要创建自己的 Silverlight 插件 :)

证明(来自 System.Windows.dll 的反射)

// System.Windows.Controls.SaveFileDialog
private bool? ShowDialogInternal(Window owner)

    ...
    // call to native plugin API to show save dialog
    num = XcpImports.UI_GetSaveFileName(NativeHost.Current.RuntimeHost, ref this.m_dlgInfo, out dialogResult);
    if (NativeMethods.SUCCEEDED(num) && this.m_dlgInfo.lpstrFile != IntPtr.Zero && dialogResult == DialogResult.OK)
    
      // if everything went ok, we have the handle to saved file
      ...
    
    ...

话虽如此 - 如果您将浏览器配置为信任您的应用,则可以关闭此对话框。另请查看此连接问题,质疑此对话框的有效性:

https://connect.microsoft.com/VisualStudio/feedback/details/690502/savefiledialog-security-warning

【讨论】:

感谢您的回复,我已经在 connect 中遇到过该问题。我会尝试你的解决方案。谢谢:)

以上是关于在 Silverlight5 中添加 SaveFileDialog 的 DefaultFileName 属性时更改安全警告提示中的默认消息的主要内容,如果未能解决你的问题,请参考以下文章

将新对象添加到域数据源

将代码签名证书导入浏览器

安装 VS 2015.1 / .NET 4.6.1 后 Silverlight 5 SDK SLSvcUtil 错误

警告过多的开放数字

获取 Silverlight 5 WCF 服务的完整异常跟踪

使用 Silverlight 5、IIS 7.5 对 WCF 服务进行 Windows 身份验证