【问题标题】:What are my options for selecting/opening files and folders when using WinUI3/Project Reunion 0.5?使用 WinUI3/Project Reunion 0.5 时,我有哪些选择/打开文件和文件夹的选项?
【发布时间】:2021-07-09 20:49:39
【问题描述】:

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

【问题讨论】:

  • FileOpenPicker

标签: c# xaml winui winui-3


【解决方案1】:

再一次,唯一的答案是你太早鸟了。

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

【讨论】:

    【解决方案2】:

    有一个名为 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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-11
      • 2022-12-21
      • 2021-09-07
      • 2012-02-02
      • 2013-09-21
      • 2021-07-23
      相关资源
      最近更新 更多