从Canvas中的其他UserControl设置焦点到TextBox?

时间:2012-10-22 07:15:31

标签: c# .net wpf c#-4.0 caliburn.micro

我在Window中使用Canvas,使其像MDI应用程序一样。

画布将包含多个UserControls,即子窗口。

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

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

我在Caliburn Micro上使用WPF?目前使用EventAggreagator在TextBox的GotFocus事件上打开新的UserControl。

1 个答案:

答案 0 :(得分: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();
    }
}