1

实际上没有可用的 API 允许用户简单地单击我的应用程序中的一个按钮并显示一个允许他们选择文件的对话框。我在这里错过了什么吗?

4

2 回答 2

2

同样,唯一的答案是你太早鸟了。

文件选择器是一个大问题,因为它高度介入沙盒模型。它与应用程序激活(从命令行、开始菜单、单击 url、服务等)和非沙盒/非 MSIX 打包一起在 1.0 版本的路线图上。

于 2021-04-25T15:31:10.013 回答
0

有一个名为 IWindowNative 的 COM 接口来获取 Window 对象的 HWND。不幸的是,C#/WinRT 预测需要一些改进(已经在预览版 2 中就地)以启用使用指定的 COM 接口。

[ComImport]
        [Guid("3E68D4BD-7135-4D10-8018-9FB6D9F33FA1")]
        [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
        public interface IInitializeWithWindow
        {
            void Initialize(IntPtr hwnd);
        }
        [ComImport]
        [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
        [Guid("EECDBF0E-BAE9-4CB6-A68E-9598E1CB57BB")]
        internal interface IWindowNative
        {
            IntPtr WindowHandle { get; }
        }
            var filePicker = new FileOpenPicker();

            //Get the Window's HWND
            var hwnd = this.As<IWindowNative>().WindowHandle;

            //Make folder Picker work in Win32
            var initializeWithWindow = filePicker.As<IInitializeWithWindow>();
            initializeWithWindow.Initialize(hwnd);

            filePicker.FileTypeFilter.Add("*");

            var folder = await filePicker.PickSingleFileAsync();
于 2021-08-03T21:31:13.590 回答