始终禁用粘贴

时间:2012-09-06 20:38:51

标签: wpf copy paste cut

对于“常见”外观我有一个应用程序,在功能区中显示粘贴/剪切/复制按钮,但我想要无论选择哪个字段都要禁用粘贴。我该如何处理?

1 个答案:

答案 0 :(得分:1)

默认情况下,WPF中的所有控件都有一个默认ContextMenu,允许复制,粘贴和剪切。您可以通过将此属性设置为“{x:Null}”来禁用此菜单,但与菜单选项关联的键仍然有效。为了禁用此命令,我们可以使用DataObject类,它具有处理程序以附加任何DepencencyObject以防复制或粘贴:

DataObject.AddPastingHandler(control, this.OnCancelCommand);
DataObject.AddCopyingHandler(control, this.OnCancelCommand);

最后在事件处理程序中,我们需要取消当前命令:

private void OnCancelCommand(object sender, DataObjectEventArgs e)
{
    e.CancelCommand();
}

CancelCommand方法将取消通过控件发送的任何ApplicationCommand.Copy, ApplicationCommand.Paste和ApplicationCommand.Cut。现在,如果要启用复制而不是删除调用AddCopyingHandler代码的日期对象,它将起作用。