0

我在 Window 中使用 Canvas,使其类似于 MDI 应用程序。

画布将包含多个用户控件,它们是子窗口。

我可以在某个文本框的 GotFocus 事件上的 Canvas 内打开一个新的 UserControl。

但是当我单击 Enter 或关闭新窗口时,我想将焦点设置回旧 UserControl 的下一个 TextBox?这是我无法实现的。

我正在将 WPF 与 Caliburn Micro 一起使用?当前使用 EventAggreagator 在 TextBox 的 GotFocus 事件上打开新的 UserControl。

4

1 回答 1

1

我最近做了类似的事情,我唯一能想到的就是使用IEventAggregator发布 UserControl 已关闭的通知,即

public class ControlClosedEvent
{
    public ControlClosedEvent()
    {
        // can be an empty event for all intents and purposes
    }
} 

每当 UserControl 关闭时,发布事件:

 _events.Publish( new ControlClosedEvent() );

和消费者:

public partial class SomeView : UserControl, IHandle<ControlClosedEvent>
{
    public void Handle( ControlClosedEvent message )
    {
        // ugly way of setting the text box as focused
        SomeTextBox.Focus();
    }
}
于 2012-10-23T16:11:02.273 回答