如何解决使用 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();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。