عنوان:

‫نحوه استفاده از FilePicker در WinUI 3


نویسنده: مهدی حسینی
تاریخ: ۱۴۰۰/۰۵/۰۹ ۲۱:۳۷
آدرس: www.dntips.ir
طی ماه‌های اخیر نسخه‌های اولیه و پیشنمایش WinUI 3 منتشر شده است اگر با آخرین نسخه موجود (0.8.1) کار کرده باشید متوجه برخی مشکلات و کمبود‌ها خواهید شد. یکی از مشکلات فعلی 3 WinUI این است که اگر می‌خواهید از api انتخاب کننده فایل استفاده کنید با مشکل مواجه خواهید شد و برای حل آن، باید hwnd برنامه را پیدا کنید.
با کمک کدهای زیر ما میتوانیم hwnd برنامه را پیدا کرده و آن را به FilePicker موردنظر نسبت دهیم. (همین کار برای FolderPicker نیز لازم می‌باشد.)
[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();
احتمالا در نسخه‌های بعدی (نسخه فعلی 0.8.1) نیازی به این کار نباشد.  


مشاهده مطلب اصلی