silverlight-5.0 - 银光 : disable copy/paste/cut operations on textbox

标签 silverlight-5.0

我需要禁用文本框上的复制/粘贴/剪切操作。为此,我继承了文本框并创建了 MyTextbox 并使用以下代码覆盖了 KeyDown 事件

if (!(e.Key == Key.Back || e.Key == Key.Left || e.Key == Key.Right || e.Key == Key.Delete || e.Key == Key.Tab))
{
    if ((e.Key == Key.C || e.Key == Key.X || e.Key == Key.V) &&
                     (Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
    {
        e.Handled = true;
    }
}

然后使用这个文本框。此文本框现在可防止复制/粘贴/剪切操作。

我正在尝试使用行为来实现同样的目的。为此,我创建了一个行为。代码如下

public class MyTextboxBehavior : Behavior<TextBox>
{
        protected override void OnAttached()
        {
            base.OnAttached();

            this.AssociatedObject.KeyDown += new KeyEventHandler(AssociatedObject_KeyDown);
        }

        private void AssociatedObject_KeyDown(object sender, KeyEventArgs e)
        {
            if (!(e.Key == Key.Back || e.Key == Key.Left || e.Key == Key.Right || e.Key == Key.Delete || e.Key == Key.Tab))
            {
                if ((e.Key == Key.C || e.Key == Key.X || e.Key == Key.V) &&
                     (Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
                {
                    e.Handled = true;
                }
            }
        }
}

并将此行为添加到文本框,如下所示

<TextBox>
     <Interactivity:Interaction.Behaviors>
          <CustomControl:MyTextboxBehavior></CustomControl:MyTextboxBehavior>
     </Interactivity:Interaction.Behaviors>
</TextBox>

有谁知道为什么这不起作用?

最佳答案

6 月 24 日更新

在 WPF 中,您可以在 PreviewKeyDown 事件中捕获 CTRL + X/C/V 键按下,然后您可以在文本框中禁止这些功能。

在 Silverlight 中 Preview 方法不可用,因此这里不是一个选项。 TextBox 控件还内置了对剪贴板操作复制和粘贴 CTRL+CCTRL+V 的处理(参见 Clipboard class remarks ) , 所以要抑制这些行为并不简单。

有一个 SL3 项目的尝试 here其中 OnKeyDownOnKeyUp 事件处理程序在派生自 TextBox 的类中被覆盖。该实现调用 base 方法,这在 Behavior 实现中显然不可访问,因此可以直接实现 copypaste 通过行为抑制 TextBox 似乎是不可能的。

关于silverlight-5.0 - 银光 : disable copy/paste/cut operations on textbox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11136321/

相关文章:

com - F# 2.0、Silverlight 5 和 Excel 互操作

asp.net - 什么是 Silverlight?了解和学习它对哪些类型的开发人员有益?

wpf - 在 Visual Studio 2012(RTM,在 Windows 8 RTM 上)中没有带有断点的 XAML 绑定(bind)调试?

Silverlight 本地化

c# - 在 Caliburn Micro 和 CaSTLe Windsor 中处理 ViewModel

c# - 如何在 silverlight 导航应用程序中检测后退按钮或前进按钮导航

Silverlight 5 访问冲突异常

Silverlight 5 硬件加速

c# - 获取 Silverlight 5 部署路径(在浏览器中以完全信任模式运行时)

.net - Silverlight 5 列表框大小调整