如何从 RibbonControlsLibrary 禁用功能区控件的最小化?
问问题
1489 次
3 回答
2
以下为我禁用了双击选项卡标题和上下文菜单上的“最小化功能区”:
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;
}
}
于 2012-01-28T13:13:53.450 回答
1
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; }
}
于 2011-09-26T08:19:27.947 回答
0
最小化控件且无法禁用的唯一方法是双击 Tab 标题,实际上三次单击或超过 2 次单击也会使控件最小化,这就是我的第一个想法失败的原因(我试图取消双击事件,但控件在第三次单击时最小化)。
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; }
}
于 2011-09-22T12:44:11.503 回答