如何在设计时从 WPF 应用程序获取应用程序的目录?

2024-01-10

如何从 WPF 应用程序获取应用程序的目录,在设计时?我需要在设计时访问应用程序当前目录中的资源,同时我的 XAML 显示在设计器中。我无法使用中指定的解决方案这个问题 https://stackoverflow.com/questions/938421/getting-the-applications-directory-from-a-wpf-application在设计时两者System.IO.Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName) and System.Reflection.Assembly.GetExecutingAssembly().Location指向 IDE 的位置(Visual Studio...Common7 或其他)。

根据要求进一步明确我的目标:我想在设计时访问数据库表并显示该数据的图形。该设计是在 Visual Studio 2008 中完成的,因此我需要的是针对一个非常具体的问题的非常具体的解决方案,那就是获取我的应用程序的程序集目录。


从您的描述来看,您的代码实际上是在 Visual Studio 内的 WPF 设计器内运行,例如,它是用于设计的自定义控件库的一部分。

在这种情况下,Assembly.GetEntryAssembly()返回 null,但以下代码获取应用程序目录的路径:

  string applicationDirectory = (
    from assembly in AppDomain.CurrentDomain.GetAssemblies()
    where assembly.CodeBase.EndsWith(".exe")
    select System.IO.Path.GetDirectoryName(assembly.CodeBase.Replace("file:///", ""))
    ).FirstOrDefault();

以下步骤可用于演示在 VS.NET 2008 的 WPF Designer 工具中的工作原理:

  1. 将此代码放入“WPF 自定义控件库”或“类库”项目中
  2. 添加读取数据库并返回显示数据所需的任何代码(在我的例子中,我只是将应用程序目录本身作为字符串返回)
  3. 从您正在设计的项目中引用库项目
  4. 使用 XAML 文件中的自定义控件或类来填充 DataContext 或以其他方式向 UI 提供数据(在我的例子中,我使用 x:Static 绑定 DataContext)
  5. 使用“Windows Presentation Foundation Designer”编辑该 XAML 文件,只需双击即可完成此操作,除非您更改了默认编辑器,在这种情况下,请使用“打开方式...”

当您执行这些步骤时,您正在查看的对象将在运行时和设计时以相同的方式填充数据库中的数据。

在其他场景中,相同的技术也能发挥同样的作用,并且根据您的需求,还有其他可用的解决方案。如果您的需求与我上面假设的不同,请告诉我们。例如,如果您正在编写 VS.NET 插件,那么您将面临完全不同的游戏。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在设计时从 WPF 应用程序获取应用程序的目录? 的相关文章

随机推荐