【问题标题】:How to specify path for file from different project in WPF?如何在 WPF 中指定来自不同项目的文件的路径?
【发布时间】:2010-04-06 18:38:35
【问题描述】:

我在 WPF 中有两个项目,一个项目是主要项目,第二个项目仅用于测试(它使用主项目的文件 - 文件通过项目添加 -> 添加 -> 现有项目... -> 选定的文件 -> 添加为链接,以便该文件仅在主项目中)。

项目文件夹如下:

C:\Work\...\Projects\Main
C:\Work\...\Projects\XXXTestProject

其中 XXX 代表我单独测试的主项目的不同部分。

我有代码:

<Window x:Class="Sokoban.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:Sokoban"
    xmlns:diag="clr-namespace:System.Diagnostics;assembly=WindowsBase"
    Title="Window1" Height="559" Width="419">
    <Window.Resources>        
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="GameDesk.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Window.Resources>

    <Grid>        
        <Rectangle local:GameDeskProperties.FieldSize="30" Name="myrect" Style="{DynamicResource GameDesk}" MouseEnter="Rectangle_MouseEnter" />
    </Grid>
</Window>

... 应该使用主项目中 GameDesk.xaml 中的 XAML 资源,而且我似乎无法使用 Pack URI (http://msdn.microsoft.com/en-us/library/aa970069.aspx)。如何指定文件?

  • 我应该使用绝对路径吗? (C:\Work...\Main\Resources\GameDesk.xaml)

  • 或者还有其他方法吗?

感谢您的帮助!

【问题讨论】:

  • 所以您已将 GameDesk.xaml 作为链接文件添加到您的测试项目中?
  • 是的。测试项目的每个重要部分都应该来自主项目。

标签: wpf visual-studio path


【解决方案1】:

MSDN link here

使用如下形式的 pack:// URI:

pack://application:,,,/ReferencedAssembly;component/Subfolder/ResourceFile.xaml

如果 XAML 在引用的程序集中

pack://siteoforigin:,,,/Subfolder/SiteOfOriginFile.xaml

如果 XAML 松散并复制到 bin 文件夹中。

【讨论】:

  • 我想使用第一个选项,但我认为它不适用于我的情况,因为我在一个解决方案下没有这两个项目。两个项目都在单独的解决方案中。在我的场景中它会是什么样子?谢谢!
  • 不必在同一个解决方案中,只需添加对 DLL 的引用即可。
  • 但是如果它必须被编译(“对 DLL 的引用”),我就不能在测试项目中进行更改(这实际上意味着在主项目中)。到目前为止,我已经在 VS 中设置了预构建事件,它复制了所需的文件,这不是一个很好的解决方案,但它可以工作,并且复制是通过相对路径完成的,因此它保持可移植性。
  • 您可以在您的 bin 中添加对 DLL 的引用或添加引用路径。 - 这不是问题,与 WPF 无关 - 只是一个可解决的常见 .NET 引用路径问题。
  • 如果引用正确,当 DLL 更新时,引用也会更新。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-21
  • 2010-09-21
  • 1970-01-01
  • 2011-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多