IEnumerable <IResult> - caliburn micro

2 wpf ienumerable caliburn.micro

我在打开新窗口的视图模型中使用此方法:

    public IEnumerable<IResult> OpenChatScreen()
    {
        if (!_activeChatScreens.ContainsKey(nick))
        {

            var chatScreen = new ShowWindow("ChatScreen")
                .InitializeWith(_service.DetailData(nick));

            _activeChatScreens.Add(nick, chatScreen);

            yield return chatScreen;
        }
    }
Run Code Online (Sandbox Code Playgroud)

该方法例如是按钮上的绑定.

我尝试在其他void方法中使用此方法.像这样的东西:

public void SomeMethod(string nick)
{
  OpenChatScreen(nick);
}
Run Code Online (Sandbox Code Playgroud)

但它没有打开新的窗口.有可能解决这个问题吗?我需要在其他方法typeof void中使用OpenChatScreen方法,如果有可能,我想打开新窗口.谢谢你的帮助.

要codekaizen:

我试试这个:

public void SomeMethod(string nick)
{
 new IResult[] { OpenChatScreen(nick) };
}
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

*错误2无法将类型'System.Collections.Generic.IEnumerable'隐式转换为'Caliburn.Micro.IResult'.存在显式转换(您是否缺少演员?)C:\ Users\Jan\Documents\Visual Studio 2010\Projects\C#\ Pokec_Messenger\ver.beta\Pokec__Messenger\Spirit_Caliburn_Micro_v1.1\ViewModels\MessengerViewModel.cs 314 45 Spirit_Caliburn_Micro_v1. 1*

所以我尝试施放给IResult:

                        var w = OpenChatScreen(rp.Nick) as IResult;

                        new IResult[] { w };
Run Code Online (Sandbox Code Playgroud)

错误:

*错误1只有赋值,调用,递增,递减和新对象表达式才能用作语句C:\ Users\Jan\Documents\Visual Studio 2010\Projects\C#\ Pokec_Messenger\ver.beta\Pokec__Messenger\Spirit_Caliburn_Micro_v1.1\ViewModels\MessengerViewModel.cs 314 29 Spirit_Caliburn_Micro_v1.1*

我不知道如何在void方法中使用OpenChatScreen方法.

Eup*_*ric 5

它的协程.就其本身而言,它无法运行它.你需要执行使用Caliburn.Micro:Coroutine.Execute(OpenChatScreen().GetEnumerator())

此外,尝试在官方Caliburn.Micro论坛上搜索或询问:http://caliburnmicro.codeplex.com/Thread/View.aspx?ThreadId=231822