From 56408e90f8178682b62425451db4ad1db32e9335 Mon Sep 17 00:00:00 2001 From: Hao Liu Date: Tue, 13 Jan 2026 15:39:17 +0800 Subject: [PATCH 1/3] Fix Name Property and Keyboard Focus --- .../Open Source Models/Image Models/FFNet/SegmentStreets.xaml | 2 ++ .../Image Models/FFNet/SegmentStreets.xaml.cs | 4 ++-- .../Image Models/HRNetPose/PoseDetection.xaml | 2 ++ .../Image Models/HRNetPose/PoseDetection.xaml.cs | 4 ++-- .../Image Models/MultiHRNetPose/Multipose.xaml | 2 ++ 5 files changed, 10 insertions(+), 4 deletions(-) diff --git a/AIDevGallery/Samples/Open Source Models/Image Models/FFNet/SegmentStreets.xaml b/AIDevGallery/Samples/Open Source Models/Image Models/FFNet/SegmentStreets.xaml index f88a340f..e9d4b6ac 100644 --- a/AIDevGallery/Samples/Open Source Models/Image Models/FFNet/SegmentStreets.xaml +++ b/AIDevGallery/Samples/Open Source Models/Image Models/FFNet/SegmentStreets.xaml @@ -35,6 +35,7 @@ Visibility="Collapsed" /> diff --git a/AIDevGallery/Samples/Open Source Models/Image Models/FFNet/SegmentStreets.xaml.cs b/AIDevGallery/Samples/Open Source Models/Image Models/FFNet/SegmentStreets.xaml.cs index c982b379..70cedf33 100644 --- a/AIDevGallery/Samples/Open Source Models/Image Models/FFNet/SegmentStreets.xaml.cs +++ b/AIDevGallery/Samples/Open Source Models/Image Models/FFNet/SegmentStreets.xaml.cs @@ -148,7 +148,7 @@ private async Task Segment(string filePath) UploadButton.Visibility = Visibility.Collapsed; DefaultImage.Source = new BitmapImage(new Uri(filePath)); - NarratorHelper.AnnounceImageChanged(DefaultImage, "Image changed: new upload."); // + NarratorHelper.AnnounceImageChanged(DefaultImage, "Content changed: new upload."); // using Bitmap originalImage = new(filePath); int originalImageWidth = originalImage.Width; @@ -271,7 +271,7 @@ private async Task Segment(string filePath) // Convert the final overlay to BitmapImage for display BitmapImage outputImage = BitmapFunctions.ConvertBitmapToBitmapImage(processedImage); - NarratorHelper.AnnounceImageChanged(DefaultImage, "Image changed: all regions segmented."); // + NarratorHelper.AnnounceImageChanged(DefaultImage, "Content changed: all regions segmented."); // DispatcherQueue.TryEnqueue(() => { diff --git a/AIDevGallery/Samples/Open Source Models/Image Models/HRNetPose/PoseDetection.xaml b/AIDevGallery/Samples/Open Source Models/Image Models/HRNetPose/PoseDetection.xaml index 27ab57e6..5453cf03 100644 --- a/AIDevGallery/Samples/Open Source Models/Image Models/HRNetPose/PoseDetection.xaml +++ b/AIDevGallery/Samples/Open Source Models/Image Models/HRNetPose/PoseDetection.xaml @@ -35,6 +35,7 @@ Visibility="Collapsed" /> diff --git a/AIDevGallery/Samples/Open Source Models/Image Models/HRNetPose/PoseDetection.xaml.cs b/AIDevGallery/Samples/Open Source Models/Image Models/HRNetPose/PoseDetection.xaml.cs index 73d7687c..d37903e1 100644 --- a/AIDevGallery/Samples/Open Source Models/Image Models/HRNetPose/PoseDetection.xaml.cs +++ b/AIDevGallery/Samples/Open Source Models/Image Models/HRNetPose/PoseDetection.xaml.cs @@ -146,7 +146,7 @@ private async Task DetectPose(string filePath) Loader.Visibility = Visibility.Visible; UploadButton.Visibility = Visibility.Collapsed; DefaultImage.Source = new BitmapImage(new Uri(filePath)); - NarratorHelper.AnnounceImageChanged(DefaultImage, "Image changed: new upload."); // + NarratorHelper.AnnounceImageChanged(DefaultImage, "Content changed: new upload."); // using Bitmap originalImage = new(filePath); @@ -182,7 +182,7 @@ private async Task DetectPose(string filePath) using Bitmap output = PoseHelper.RenderPredictions(originalImage, predictions, .02f); BitmapImage outputImage = BitmapFunctions.ConvertBitmapToBitmapImage(output); - NarratorHelper.AnnounceImageChanged(DefaultImage, "Image changed: key points rendered."); // + NarratorHelper.AnnounceImageChanged(DefaultImage, "Content changed: key points rendered."); // DispatcherQueue.TryEnqueue(() => { diff --git a/AIDevGallery/Samples/Open Source Models/Image Models/MultiHRNetPose/Multipose.xaml b/AIDevGallery/Samples/Open Source Models/Image Models/MultiHRNetPose/Multipose.xaml index 384138c1..43216e20 100644 --- a/AIDevGallery/Samples/Open Source Models/Image Models/MultiHRNetPose/Multipose.xaml +++ b/AIDevGallery/Samples/Open Source Models/Image Models/MultiHRNetPose/Multipose.xaml @@ -35,6 +35,7 @@ Visibility="Collapsed" /> From be80881d8a30c661efc3f5f2987912d13a768453 Mon Sep 17 00:00:00 2001 From: Hao Liu Date: Tue, 13 Jan 2026 16:00:31 +0800 Subject: [PATCH 2/3] Maintain the Keyboard focus when the selected file is null --- .../Image Models/ESRGAN/SuperResolution.xaml.cs | 2 +- .../Image Models/FFNet/SegmentStreets.xaml.cs | 2 +- .../Image Models/Faster RCNN/ObjectDetection.xaml.cs | 2 +- .../Image Models/HRNetPose/PoseDetection.xaml.cs | 2 +- .../Image Models/MultiHRNetPose/Multipose.xaml.cs | 2 +- .../Image Models/YOLOv4/YOLOObjectDetection.xaml.cs | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/AIDevGallery/Samples/Open Source Models/Image Models/ESRGAN/SuperResolution.xaml.cs b/AIDevGallery/Samples/Open Source Models/Image Models/ESRGAN/SuperResolution.xaml.cs index 7855fade..01398017 100644 --- a/AIDevGallery/Samples/Open Source Models/Image Models/ESRGAN/SuperResolution.xaml.cs +++ b/AIDevGallery/Samples/Open Source Models/Image Models/ESRGAN/SuperResolution.xaml.cs @@ -133,10 +133,10 @@ private async void UploadButton_Click(object sender, RoutedEventArgs e) // Pick a file var file = await picker.PickSingleFileAsync(); + UploadButton.Focus(FocusState.Programmatic); if (file != null) { // Call function to run inference and classify image - UploadButton.Focus(FocusState.Programmatic); SendSampleInteractedEvent("FileSelected"); // await EnhanceImage(file.Path); } diff --git a/AIDevGallery/Samples/Open Source Models/Image Models/FFNet/SegmentStreets.xaml.cs b/AIDevGallery/Samples/Open Source Models/Image Models/FFNet/SegmentStreets.xaml.cs index 70cedf33..8381ae05 100644 --- a/AIDevGallery/Samples/Open Source Models/Image Models/FFNet/SegmentStreets.xaml.cs +++ b/AIDevGallery/Samples/Open Source Models/Image Models/FFNet/SegmentStreets.xaml.cs @@ -128,9 +128,9 @@ private async void UploadButton_Click(object sender, RoutedEventArgs e) picker.ViewMode = PickerViewMode.Thumbnail; var file = await picker.PickSingleFileAsync(); + UploadButton.Focus(FocusState.Programmatic); if (file != null) { - UploadButton.Focus(FocusState.Programmatic); SendSampleInteractedEvent("FileSelected"); // await Segment(file.Path); } diff --git a/AIDevGallery/Samples/Open Source Models/Image Models/Faster RCNN/ObjectDetection.xaml.cs b/AIDevGallery/Samples/Open Source Models/Image Models/Faster RCNN/ObjectDetection.xaml.cs index 95bbb063..4df2152d 100644 --- a/AIDevGallery/Samples/Open Source Models/Image Models/Faster RCNN/ObjectDetection.xaml.cs +++ b/AIDevGallery/Samples/Open Source Models/Image Models/Faster RCNN/ObjectDetection.xaml.cs @@ -130,9 +130,9 @@ private async void UploadButton_Click(object sender, RoutedEventArgs e) picker.ViewMode = PickerViewMode.Thumbnail; var file = await picker.PickSingleFileAsync(); + UploadButton.Focus(FocusState.Programmatic); if (file != null) { - UploadButton.Focus(FocusState.Programmatic); SendSampleInteractedEvent("FileSelected"); // await DetectObjects(file.Path); } diff --git a/AIDevGallery/Samples/Open Source Models/Image Models/HRNetPose/PoseDetection.xaml.cs b/AIDevGallery/Samples/Open Source Models/Image Models/HRNetPose/PoseDetection.xaml.cs index d37903e1..721b0295 100644 --- a/AIDevGallery/Samples/Open Source Models/Image Models/HRNetPose/PoseDetection.xaml.cs +++ b/AIDevGallery/Samples/Open Source Models/Image Models/HRNetPose/PoseDetection.xaml.cs @@ -127,9 +127,9 @@ private async void UploadButton_Click(object sender, RoutedEventArgs e) picker.ViewMode = PickerViewMode.Thumbnail; var file = await picker.PickSingleFileAsync(); + UploadButton.Focus(FocusState.Programmatic); if (file != null) { - UploadButton.Focus(FocusState.Programmatic); SendSampleInteractedEvent("FileSelected"); // await DetectPose(file.Path); } diff --git a/AIDevGallery/Samples/Open Source Models/Image Models/MultiHRNetPose/Multipose.xaml.cs b/AIDevGallery/Samples/Open Source Models/Image Models/MultiHRNetPose/Multipose.xaml.cs index 0f2a0983..430870c8 100644 --- a/AIDevGallery/Samples/Open Source Models/Image Models/MultiHRNetPose/Multipose.xaml.cs +++ b/AIDevGallery/Samples/Open Source Models/Image Models/MultiHRNetPose/Multipose.xaml.cs @@ -152,10 +152,10 @@ private async void UploadButton_Click(object sender, RoutedEventArgs e) picker.ViewMode = PickerViewMode.Thumbnail; var file = await picker.PickSingleFileAsync(); + UploadButton.Focus(FocusState.Programmatic); if (file != null) { // Call function to run inference and classify image - UploadButton.Focus(FocusState.Programmatic); SendSampleInteractedEvent("FileSelected"); // await RunPipeline(file.Path); } diff --git a/AIDevGallery/Samples/Open Source Models/Image Models/YOLOv4/YOLOObjectDetection.xaml.cs b/AIDevGallery/Samples/Open Source Models/Image Models/YOLOv4/YOLOObjectDetection.xaml.cs index 1dadf1a8..f0511a57 100644 --- a/AIDevGallery/Samples/Open Source Models/Image Models/YOLOv4/YOLOObjectDetection.xaml.cs +++ b/AIDevGallery/Samples/Open Source Models/Image Models/YOLOv4/YOLOObjectDetection.xaml.cs @@ -136,10 +136,10 @@ private async void UploadButton_Click(object sender, RoutedEventArgs e) // Pick a file var file = await picker.PickSingleFileAsync(); + UploadButton.Focus(FocusState.Programmatic); if (file != null) { // Call function to run inference and classify image - UploadButton.Focus(FocusState.Programmatic); SendSampleInteractedEvent("FileSelected"); // await DetectObjects(file.Path); } From 54ecf9506c545a50335ee4ac532bf7d08f29f7e2 Mon Sep 17 00:00:00 2001 From: Hao Liu Date: Tue, 13 Jan 2026 16:21:20 +0800 Subject: [PATCH 3/3] Fix text truncated issue --- AIDevGallery/Controls/ModelPicker/AddHFModelView.xaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/AIDevGallery/Controls/ModelPicker/AddHFModelView.xaml b/AIDevGallery/Controls/ModelPicker/AddHFModelView.xaml index abc7a665..51a7c8af 100644 --- a/AIDevGallery/Controls/ModelPicker/AddHFModelView.xaml +++ b/AIDevGallery/Controls/ModelPicker/AddHFModelView.xaml @@ -56,7 +56,9 @@ Grid.Row="1" HorizontalAlignment="Center" Foreground="{ThemeResource TextFillColorSecondaryBrush}" - Text="Browse and download generative language models from Hugging Face." /> + Text="Browse and download generative language models from Hugging Face." + TextAlignment="Center" + TextWrapping="Wrap" />