将命令属性与 CM 操作方法/协程一起使用

本文关键字:一起 程一起 属性 命令 CM 操作方法 | 更新日期: 2023-09-27 18:34:38

这与这个问题有关

MVVM关闭文档的方式,可以取消

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

使用香草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>

将命令属性与 CM 操作方法/协程一起使用

如果我理解正确,你可以试试这个。

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

在您的视图中模型

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

您从那里有多种选择。

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