gpt4 book ai didi

c# - 具有单独程序集和加载控件的 MEF WPF 应用程序

转载 作者:太空狗 更新时间:2023-10-30 01:26:32 24 4
gpt4 key购买 nike

我在通过 MEF 连接的单独的 dll 文件中有 UI 应用程序扩展。我的问题是,如果他们有一个对话框(WPF 用户控件),我是否应该像这样将对话框作为扩展的属性:

public UserControl ExtDialog { get; set; }

还是应该将它们加载到包 uri 中?

public string ExtDialogUri { get; set; }

我倾向于 pack uri,但不确定它是否真的有效。哪种方式更“推荐”?

注意:将使用 NavigationService.Navigate(); 导航到这些对话框;方法。

最佳答案

我不会使用这两个选项。问题是这两种方法在创建对话框的时间方面都缺乏灵 active 。如果使用第一种方法,则无论是否需要,都会始终创建对话框。使用 pack url 的问题是扩展将无法控制对话框实例的创建方式。如果控件在创建后需要初始化(需要创建 View 模型等)怎么办?

在我看来,最好公开一个将用于创建对话框的工厂:

public IExtDialogFactory ExtDialogFactory { get; set; }

public interface IExtDialogFactory
{
UserControl CreateDialog();
}

关于c# - 具有单独程序集和加载控件的 MEF WPF 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4717470/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com