RibbonTabHeader support for Collapsed
This commit is contained in:
1 parent
03a4777d29
commit
740ac6d4a3
4 files changed
+53
-17
No files matched your search
@@ -2,7 +2,6 @@
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Controls.Primitives;
|
||||
using HandyControl.Data;
|
||||
using HandyControl.Tools;
|
||||
|
||||
namespace HandyControl.Controls
|
||||
{
|
||||
@@ -75,11 +74,16 @@ namespace HandyControl.Controls
|
||||
Ribbon?.NotifyTabHeaderChanged();
|
||||
}
|
||||
|
||||
protected override DependencyObject GetContainerForItemOverride() => new RibbonGroup();
|
||||
|
||||
protected override bool IsItemItsOwnContainerOverride(object item) => item is RibbonGroup;
|
||||
|
||||
private static void OnVisibilityChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
|
||||
{
|
||||
var ribbonTab = (RibbonTab) d;
|
||||
var ribbon = ribbonTab.Ribbon;
|
||||
ribbonTab.RibbonTabHeader?.CoerceValue(VisibilityProperty);
|
||||
|
||||
var ribbon = ribbonTab.Ribbon;
|
||||
if (ribbon == null ||
|
||||
!ribbonTab.IsSelected ||
|
||||
(Visibility) e.OldValue != Visibility.Visible ||
|
||||
@@ -90,9 +94,5 @@ namespace HandyControl.Controls
|
||||
|
||||
ribbon.ResetSelection();
|
||||
}
|
||||
|
||||
protected override DependencyObject GetContainerForItemOverride() => new RibbonGroup();
|
||||
|
||||
protected override bool IsItemItsOwnContainerOverride(object item) => item is RibbonGroup;
|
||||
}
|
||||
}
|
||||
@@ -25,16 +25,15 @@ namespace HandyControl.Controls
|
||||
}
|
||||
}
|
||||
|
||||
static RibbonTabHeader()
|
||||
{
|
||||
VisibilityProperty.OverrideMetadata(typeof(RibbonTabHeader), new FrameworkPropertyMetadata(null, CoerceVisibility));
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty IsSelectedProperty = DependencyProperty.Register(
|
||||
"IsSelected", typeof(bool), typeof(RibbonTabHeader),
|
||||
new PropertyMetadata(ValueBoxes.FalseBox, OnIsSelectedChanged, CoerceIsSelected));
|
||||
|
||||
private static object CoerceIsSelected(DependencyObject d, object basevalue)
|
||||
{
|
||||
var ribbonTab = ((RibbonTabHeader) d).RibbonTab;
|
||||
return ribbonTab != null ? ValueBoxes.BooleanBox(ribbonTab.IsSelected) : basevalue;
|
||||
}
|
||||
|
||||
private static void OnIsSelectedChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
|
||||
{
|
||||
((RibbonTabHeader) d).OnIsSelectedChanged((bool) e.OldValue, (bool) e.NewValue);
|
||||
@@ -49,6 +48,7 @@ namespace HandyControl.Controls
|
||||
internal void PrepareRibbonTabHeader()
|
||||
{
|
||||
CoerceValue(IsSelectedProperty);
|
||||
CoerceValue(VisibilityProperty);
|
||||
}
|
||||
|
||||
protected virtual void OnIsSelectedChanged(bool oldIsSelected, bool newIsSelected)
|
||||
@@ -80,5 +80,17 @@ namespace HandyControl.Controls
|
||||
|
||||
ribbonTab.IsSelected = true;
|
||||
}
|
||||
|
||||
private static object CoerceIsSelected(DependencyObject d, object basevalue)
|
||||
{
|
||||
var ribbonTab = ((RibbonTabHeader) d).RibbonTab;
|
||||
return ribbonTab != null ? ValueBoxes.BooleanBox(ribbonTab.IsSelected) : basevalue;
|
||||
}
|
||||
|
||||
private static object CoerceVisibility(DependencyObject d, object basevalue)
|
||||
{
|
||||
var ribbonTab = ((RibbonTabHeader) d).RibbonTab;
|
||||
return ribbonTab != null ? ValueBoxes.VisibilityBox(ribbonTab.Visibility) : basevalue;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user