From e4cd7d6e0cd99e253d3dfd24839552ce24293fcc Mon Sep 17 00:00:00 2001 From: chinboy Date: Fri, 19 Dec 2025 16:17:39 +0800 Subject: [PATCH] Refactor ImagePreviewer Add CoverIndicatorContent support --- .../ImagePreviewer/ImagePreviewer.cs | 22 ++++++++++++++++++ .../ImagePreviewer/ImagePreviewerCover.cs | 2 +- .../Themes/ImagePreviewerCoverTheme.axaml | 23 ++++--------------- .../Themes/ImagePreviewerTheme.axaml | 19 ++++++++++++++- 4 files changed, 46 insertions(+), 20 deletions(-) diff --git a/src/AtomUI.Desktop.Controls/ImagePreviewer/ImagePreviewer.cs b/src/AtomUI.Desktop.Controls/ImagePreviewer/ImagePreviewer.cs index e64ab9e98..1951e4451 100644 --- a/src/AtomUI.Desktop.Controls/ImagePreviewer/ImagePreviewer.cs +++ b/src/AtomUI.Desktop.Controls/ImagePreviewer/ImagePreviewer.cs @@ -1,11 +1,20 @@ using Avalonia; +using Avalonia.Controls; +using Avalonia.Controls.Templates; using Avalonia.Interactivity; +using Avalonia.Metadata; namespace AtomUI.Desktop.Controls; public class ImagePreviewer : AbstractImagePreviewer { #region 公共属性定义 + public static readonly StyledProperty CoverIndicatorContentProperty = + AvaloniaProperty.Register(nameof(CoverIndicatorContent)); + + public static readonly StyledProperty CoverIndicatorContentTemplateProperty = + AvaloniaProperty.Register(nameof(CoverIndicatorContentTemplate)); + public static readonly StyledProperty CoverImageSrcProperty = AvaloniaProperty.Register(nameof(CoverImageSrc)); @@ -14,6 +23,19 @@ public class ImagePreviewer : AbstractImagePreviewer get => GetValue(CoverImageSrcProperty); set => SetValue(CoverImageSrcProperty, value); } + + [DependsOn(nameof(CoverIndicatorContentTemplate))] + public object? CoverIndicatorContent + { + get => GetValue(CoverIndicatorContentProperty); + set => SetValue(CoverIndicatorContentProperty, value); + } + + public IDataTemplate? CoverIndicatorContentTemplate + { + get => GetValue(CoverIndicatorContentTemplateProperty); + set => SetValue(CoverIndicatorContentTemplateProperty, value); + } #endregion #region 内部属性定义 diff --git a/src/AtomUI.Desktop.Controls/ImagePreviewer/ImagePreviewerCover.cs b/src/AtomUI.Desktop.Controls/ImagePreviewer/ImagePreviewerCover.cs index c6e09711e..ec7eba425 100644 --- a/src/AtomUI.Desktop.Controls/ImagePreviewer/ImagePreviewerCover.cs +++ b/src/AtomUI.Desktop.Controls/ImagePreviewer/ImagePreviewerCover.cs @@ -8,7 +8,7 @@ using Avalonia.Interactivity; namespace AtomUI.Desktop.Controls; -internal class ImagePreviewerCover : TemplatedControl, IMotionAwareControl +internal class ImagePreviewerCover : ContentControl, IMotionAwareControl { #region 公共属性定义 public static readonly StyledProperty ImageSourceProperty = diff --git a/src/AtomUI.Desktop.Controls/ImagePreviewer/Themes/ImagePreviewerCoverTheme.axaml b/src/AtomUI.Desktop.Controls/ImagePreviewer/Themes/ImagePreviewerCoverTheme.axaml index 82279d57d..57614e12b 100644 --- a/src/AtomUI.Desktop.Controls/ImagePreviewer/Themes/ImagePreviewerCoverTheme.axaml +++ b/src/AtomUI.Desktop.Controls/ImagePreviewer/Themes/ImagePreviewerCoverTheme.axaml @@ -2,8 +2,6 @@ xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:atom="https://atomui.net" - xmlns:antdicons="https://atomui.net/icons/antdesign" - xmlns:imagepreviewlang="using:AtomUI.Desktop.Controls.ImagePreviewerLang" x:ClassModifier="internal"> @@ -14,22 +12,17 @@ BorderBrush="{TemplateBinding BorderBrush}" CornerRadius="{TemplateBinding CornerRadius}"> - + - - - - + - + @@ -38,12 +31,6 @@ - -