图像文件的URI,它是所选库的本地文件

时间:2015-02-23 16:58:56

标签: c# xaml windows-phone-8.1 uri

我的解决方案包括两个项目:
- Windows Phone 8.1应用程序
- Windows Phone 8.1的类库

在应用程序中,我有XAML个文件,其中ControlTemplate名为MyControlTemplateMyControlTemplate<Image Source="{Binding Image}">

在我的类库中,我有一个Page,其控件使用MyControlTemplateMyControlTemplate使用DataContext类,该类具有Image属性,该属性将URI返回给包含图像的文件。

带有图片的文件位于Assets文件夹中,该文件夹在类库中本地设置。

问题是,当绑定到Image属性以获取所选图像时,创建新URI的路径不会指向类库中的Assets文件夹。

我目前的解决方案是:

private static Uri _baseUri = new Uri("ms-appx:///Assets");  

然后用于:

public Uri Image
    {
        get
        {
            return new Uri(SampleDataCommon._baseUri, this._picture);
        }
    }  

其中this._picture设置为@".\Assets\cliff.jpg"

它实际上有效,即它从Shared\Assets项目文件夹获取图像,但不是类库的Assets文件夹,这是我想要实现的。

URI的任何帮助?

谢谢!

2 个答案:

答案 0 :(得分:1)

  

如果您在C#中使用LinkedResource(),则很可能不会   获取您的相对URI或文件位置。

     

您可以使用一些额外的代码

        var outPutDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase);

        var logoimage = Path.Combine(outPutDirectory, "Images\\logo.png");

        string relLogo = new Uri(logoimage).LocalPath;

        var logoImage = new LinkedResource(relLogo)
  

现在它将拾取你的相对路径,将其转换为绝对路径   在记忆中它会帮助你获得图像。

来自 How to set relative path to Images directory inside C# project?

看起来它可以让您以您正在寻找的方式链接图像。

答案 1 :(得分:1)

这就是我解决问题的方法:

private static Uri _baseUri = new Uri("ms-appx:///nameOfTheProject/Assets/");