将命令属性与CM Action方法/ Coroutine一起使用

时间:2013-10-10 08:32:11

标签: c# caliburn.micro

这与此问题有关

MVVM way to close document with possibility to cancel out

我正在使用第三方库(AvalonDock)它有一个CloseCommand属性,如何使用Caliburn将此属性挂钩到Action方法?

使用vanilla WPF它可能看起来像这样

<ad:DockingManager
    DataContext="{Binding Manager}"
    DocumentsSource="{Binding Documents}">

    <ad:DockingManager.LayoutItemContainerStyle>
        <Style TargetType="{x:Type ad:LayoutItem}">
            <Setter Property="CloseCommand" Value="{Binding Model.CloseCommand}"/>
        </Style>
    </ad:DockingManager.LayoutItemContainerStyle>

</ad:DockingManager>

1 个答案:

答案 0 :(得分:1)

如果我理解正确,你可以尝试一下。

<ad:DockingManager cal:Message.Attach="[Event DocumentClosed] = [Action DockingManager_DocumentClosed($eventArgs)]" />

在您的ViewModel

public void DockingManager_DocumentClosed(DocumentClosedEventArgs e)
        {
            Models.Documents.Document doc = e.Document.Content as Models.Documents.Document;
            DocumentSources.Remove(doc);
        }

你有几个选择。

ps:Models.Documents是一个类,其中存储了我的(文档)集合