我們在嘗試爲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