我的解决方案包括两个项目:
- Windows Phone 8.1应用程序
- Windows Phone 8.1的类库
在应用程序中,我有XAML
个文件,其中ControlTemplate
名为MyControlTemplate
。 MyControlTemplate
有<Image Source="{Binding Image}">
在我的类库中,我有一个Page
,其控件使用MyControlTemplate
。 MyControlTemplate
使用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
的任何帮助?
谢谢!
答案 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/");