diff --git a/Fluent.Ribbon.Showcase/TestContent.xaml b/Fluent.Ribbon.Showcase/TestContent.xaml index 831a0ee1c..cc2c16798 100644 --- a/Fluent.Ribbon.Showcase/TestContent.xaml +++ b/Fluent.Ribbon.Showcase/TestContent.xaml @@ -23,7 +23,7 @@ - + @@ -90,7 +90,7 @@ - + - + @@ -1104,10 +1104,11 @@ Pellentesque nec dolor sed lacus tristique rutrum sed vitae urna. Sed eu pharetr - - + Read-only Writeable - + - + + Fluent:KeyTip.Keys="LTM" /> @@ -2809,7 +2810,7 @@ Pellentesque nec dolor sed lacus tristique rutrum sed vitae urna. Sed eu pharetr - + - + - + - + - - + + Fluent.Ribbon @@ -2997,42 +2998,42 @@ Pellentesque nec dolor sed lacus tristique rutrum sed vitae urna. Sed eu pharetr It provides controls such as RibbonTabControl, Backstage, Gallery, QuickAccessToolbar, ScreenTip and so on. - - - - - - - - + + + + + + + - - - - - - + + + + + - - - - - + + + - - - - - - + - - - - - + + + - - - + + - - - - - - - - + + + + + + + - - - - - + + + + - - - - - - - - - + + + + + + + - - - - - - - - - - - + + + + + + + + + - ApplicationMenu - Backstage - Empty menu - + ApplicationMenu + Backstage + Empty menu + - - Show start screen - - - - - - - + + + + + + - - - - - - - IsIconVisible - - - IsCollapsed - - - IsAutomaticCollapseEnabled - - + + + + + + IsIconVisible + + + IsCollapsed + + + IsAutomaticCollapseEnabled + + - IsStatusBarVisible - - + - - IgnoreTaskbarOnMaximize - - - - - - - - ShowQuickAccessToolBarAboveRibbon - - - CanCustomizeQuickAccessToolBar - - - CanCustomizeQuickAccessToolBarItems - - - CanCustomizeRibbon - - - IsMinimized - - - CanMinimize - - - IsCollapsed - - - IsAutomaticCollapseEnabled - - - IsQuickAccessToolBarVisible - - - IsQuickAccessToolBarMenuDropDownVisible - - - CanQuickAccessLocationChanging - - - AutomaticStateManagement - - - AreTabHeadersVisible - - - IsToolBarVisible - - - IsMouseWheelScrollingEnabled - - - IsDefaultContextMenuEnabled - - - - - - - + - + - + - + GetTypesWithImplementedInterface(Type type) private static readonly Type[] excludedTypesForLogicalChildSupportTest = { + typeof(MediumIconProviderProperties), typeof(LargeIconProviderProperties), typeof(GalleryItem) }; diff --git a/Fluent.Ribbon/Controls/RibbonGroupBox.cs b/Fluent.Ribbon/Controls/RibbonGroupBox.cs index c18769eb7..83bb3871d 100644 --- a/Fluent.Ribbon/Controls/RibbonGroupBox.cs +++ b/Fluent.Ribbon/Controls/RibbonGroupBox.cs @@ -31,7 +31,7 @@ namespace Fluent [TemplatePart(Name = "PART_UpPanel", Type = typeof(Panel))] [TemplatePart(Name = "PART_ParentPanel", Type = typeof(Panel))] [TemplatePart(Name = "PART_SnappedImage", Type = typeof(Image))] - public class RibbonGroupBox : HeaderedItemsControl, IQuickAccessItemProvider, IDropDownControl, IKeyTipedControl, IHeaderedControl, ILogicalChildSupport + public class RibbonGroupBox : HeaderedItemsControl, IQuickAccessItemProvider, IDropDownControl, IKeyTipedControl, IHeaderedControl, ILogicalChildSupport, IMediumIconProvider { #region Fields @@ -364,7 +364,7 @@ public object? LauncherIcon #endregion - #region LauncherIcon + #region LauncherText /// /// Gets or sets launcher button text @@ -549,6 +549,20 @@ public object? Icon #endregion + #region MediumIcon + + /// + public object? MediumIcon + { + get { return this.GetValue(MediumIconProperty); } + set { this.SetValue(MediumIconProperty, value); } + } + + /// Identifies the dependency property. + public static readonly DependencyProperty MediumIconProperty = MediumIconProviderProperties.MediumIconProperty.AddOwner(typeof(RibbonGroupBox), new PropertyMetadata(LogicalChildSupportHelper.OnLogicalChildPropertyChanged)); + + #endregion + #region IsSeparatorVisible /// @@ -1232,6 +1246,11 @@ protected override IEnumerator LogicalChildren yield return this.Icon; } + if (this.MediumIcon is not null) + { + yield return this.MediumIcon; + } + if (this.LauncherIcon is not null) { yield return this.LauncherIcon; diff --git a/Fluent.Ribbon/IMediumIconProvider.cs b/Fluent.Ribbon/IMediumIconProvider.cs new file mode 100644 index 000000000..c78483521 --- /dev/null +++ b/Fluent.Ribbon/IMediumIconProvider.cs @@ -0,0 +1,31 @@ +namespace Fluent +{ + using System.Windows; + using Fluent.Helpers; + + /// + /// Inferface for controls which provide a medium icon. + /// + public interface IMediumIconProvider + { + /// + /// Gets or sets the medium icon. + /// + object? MediumIcon { get; set; } + } + + /// + /// Provides some for . + /// + public class MediumIconProviderProperties : DependencyObject + { + private MediumIconProviderProperties() + { + } + + /// + /// for . + /// + public static readonly DependencyProperty MediumIconProperty = DependencyProperty.Register(nameof(IMediumIconProvider.MediumIcon), typeof(object), typeof(MediumIconProviderProperties), new PropertyMetadata(LogicalChildSupportHelper.OnLogicalChildPropertyChanged)); + } +} \ No newline at end of file diff --git a/Fluent.Ribbon/Themes/Controls/RibbonGroupBox.xaml b/Fluent.Ribbon/Themes/Controls/RibbonGroupBox.xaml index 6f4c75f72..b4b8c8274 100644 --- a/Fluent.Ribbon/Themes/Controls/RibbonGroupBox.xaml +++ b/Fluent.Ribbon/Themes/Controls/RibbonGroupBox.xaml @@ -330,18 +330,28 @@ Margin="5,38,5,0" KeyboardNavigation.IsTabStop="False" /> - - + BorderBrush="{DynamicResource Fluent.Ribbon.Brushes.RibbonGroupBox.Collapsed.BorderBrush}"> + + + + + + + + + + + + + + + + +