如何在RibbonControlsLibrary中禁用最小化功能区控件?
发布于 2011-09-26 16:19:28
public class ExRibbon : Ribbon
{
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
if (!IsMinimizable)
{
IsMinimizedProperty.OverrideMetadata(typeof(ExRibbon),
new FrameworkPropertyMetadata(false, (o, e) => { }, (o,e) => false));
}
}
public bool IsMinimizable { get; set; }
}发布于 2012-01-28 21:13:53
下面的代码为我禁用了双击选项卡标题和上下文菜单上的“最小化功能区”功能:
public class ExRibbon : Ribbon
{
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
IsMinimizedProperty.OverrideMetadata(typeof(ExRibbon),
new FrameworkPropertyMetadata(false, (o, e) => { }, (o, e) => false));
Type ownerType = typeof(ExRibbon);
CommandManager.RegisterClassCommandBinding(ownerType,
new CommandBinding(RibbonCommands.MinimizeRibbonCommand, null, MinimizeRibbonCanExecute));
}
private static void MinimizeRibbonCanExecute(object sender, CanExecuteRoutedEventArgs args)
{
args.CanExecute = false;
args.Handled = true;
}
}发布于 2011-09-22 20:44:12
最小化控件并且不能被禁用的唯一方法是双击Tab标题,事实上,三次单击或超过两次单击也会最小化控件,这就是为什么我的第一个想法失败了(我试图取消双击事件,但控件在第三次单击时最小化)。
因此,这个解决方案不是太复杂,但它工作得很好,当在TabHeaderItemsControl (这是保存选项卡的控件)上检测到两次以上的单击时,该控件将最大化
public class MinimizableRibbon : Ribbon
{
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
RibbonTabHeaderItemsControl tabItems = this.FindName("TabHeaderItemsControl") as RibbonTabHeaderItemsControl;
int lastClickTime = 0;
if (tabItems != null)
tabItems.PreviewMouseDown += (_, e) =>
{
// A continuous click was made (>= 2 clicks minimizes the control)
if (Environment.TickCount - lastClickTime < 300)
// here the control should be minimized
if (!IsMinimizable)
IsMinimized = false;
lastClickTime=Environment.TickCount;
};
}
public bool IsMinimizable { get; set; }
}https://stackoverflow.com/questions/7412853
复制相似问题