使用 WinUI3/Project Reunion 0.5 时,我有哪些选择/打开文件和文件夹的选项?

问题描述

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

解决方法

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

文件选择器是一个大问题,因为它高度介入沙盒模型。它与应用程序激活(从命令行启动、开始菜单、单击 url、服务等)和非沙盒/非 MSIX 打包一起在 1.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();

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...