将事件路由到WPF中的兄弟控制

时间:2010-12-14 06:34:56

标签: .net wpf

我有一个用于搜索的TextBox控件,以及它下面的TreeView控件。我需要的是当我按下“向下键↓”而焦点在搜索TextBox 时,我需要告诉TreeView“按下了一个向下键,而焦点在你身上< / strong>“...我不需要在TreeView或其他东西上引发KeyUp事件,我需要它执行相同的操作,就好像我按下向下键同时关注它!

这可能吗?

2 个答案:

答案 0 :(得分:0)

你可以做以下事情:

private void TextBox_KeyUp(object sender, KeyEventArgs e)
{
    TreeView1.RaiseEvent(e);
}

答案 1 :(得分:0)

protected override void OnStartup(StartupEventArgs e)
{
    EventManager.RegisterClassHandler(typeof(TextBox),
        TextBox.KeyUpEvent,
        new System.Windows.Input.KeyEventHandler(TextBox_KeyUp));

    base.OnStartup(e);
}

private void TextBox_KeyUp(object sender, System.Windows.Input.KeyEventArgs e)
{
    if (e.Key != System.Windows.Input.Key.Down) return;

    TreeViewItem newChild = new TreeViewItem();

    newChild.Header = "a Down Key has been pressed while the focus on you";

    Parent.Items.Add(newChild);
    e.Handled = true;
    //MessageBox.Show("Enter pressed");
}