我有一个WPF应用程序,它是另一个公司的应用程序中托管的用户控件。

我创建的文本框将接受所有字符和数字,但大写字母“ S”除外。它们是MVVM绑定的字符串属性,该字符串属性可对除'S'以外的任何其他字符起作用。文本更改事件也会触发其他所有字符。向上和向下的on键将触发“ S”字符。文本框不显示字符。

我读到某处有时与托管用户控件发生冲突,在该控件中它将不接受某些输入,但是由于在这种情况下我无法以编程方式访问主机窗口,因此无法设置解决此问题所需的ElementHost属性。该控件由另一个在第三方应用程序下托管的用户控件托管,我也正在添加一个应用程序。

我对其他所有关键功能都感到震惊。我在另一台计算机上进行了检查,以发现相同的问题,因此它与硬件无关。

最佳答案

我怀疑您已订阅TextChanged事件。如果是这种情况,只需订阅PreviewKeyDown,应用您的过滤器并将e.Handled设置为true即可接收它。

private void PreviewKeyDownFilter(object sender, KeyEventArgs e)
{
    if (e.Key == Key.S && Keyboard.IsKeyDown(Key.LeftShift))
        e.Handled = true;
}

关于c# - WPF文本更改事件未在“S”上触发,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50805155/

10-11 02:19
查看更多