我们在尝试为WPF中的自定义控件创建事件时遇到问题。我们有这样的代码:WPF - 用户控件内部发生的事件
public static readonly RoutedEvent KeyPressedEvent =
EventManager.RegisterRoutedEvent(
"keyPressed", RoutingStrategy.Bubble,
typeof(KeyEventHandler), typeof(Keyboard));
public event KeyEventHandler keyPressed
{
add { AddHandler(KeyPressedEvent, value); }
remove { RemoveHandler(KeyPressedEvent, value); }
}
void btnAlphaClick(object sender, RoutedEventArgs e)
{
var btn = (Button)sender;
Key key = (Key)Enum.Parse(typeof(Key), btn.Content.ToString().ToUpper());
PresentationSource source = null;
foreach (PresentationSource s in PresentationSource.CurrentSources)
{
source = s;
}
RaiseEvent(new KeyEventArgs(InputManager.Current.PrimaryKeyboardDevice, source,0,key));
控制是屏幕键盘上,我们基本上需要传递出的KeyPressedEventArgs到订户对事件的细节是什么键被按下(我们无法在WPF中找到很多帮助我们,只有winforms)。
任何帮助,非常感谢!
也许是正确的事件是PreviewKeyUp和PreviewKeyDown。另外我会使用隧道事件而不是泡沫。我不确定,我会在稍后检查我的假设。 – vorrtex 2011-03-21 17:02:08
你尝试过“KeyGestures”吗? – Pacman 2011-03-22 04:41:43
刚进办公室。但感谢有兴趣的人,我会看看上面提到的那些 – JBeagle 2011-03-22 09:27:12