如何在Silverlight中引用XAML中图像的基本URL?
我的silverlight应用程序中到处都是图像,由于我们决定的结构,所有图像都来自HTTP URL 目前,在XAML中,图像将声明如下:如何在Silverlight中引用XAML中图像的基本URL?,silverlight,xaml,global-variables,Silverlight,Xaml,Global Variables,我的silverlight应用程序中到处都是图像,由于我们决定的结构,所有图像都来自HTTP URL 目前,在XAML中,图像将声明如下: <Image Source="http://www.example.com/directory/example.png" /> 我希望所有引用图像的基本URL存储在全局字符串常量中,可从所有XAML文件和代码隐藏文件访问 i、 e.常量字符串BASE_URI=“” 我如何做到这一点,并在XAML中引用它,同时将字符串附加到实际的图像名称?我
<Image Source="http://www.example.com/directory/example.png" />
我希望所有引用图像的基本URL存储在全局字符串常量中,可从所有XAML文件和代码隐藏文件访问
i、 e.常量字符串BASE_URI=“”
我如何做到这一点,并在XAML中引用它,同时将字符串附加到实际的图像名称?我曾想过使用转换器,但这需要数据绑定,而这里我只是直接使用字符串。如果没有一些重要的代码,就无法实现您想要的。正如您已经想到的,最简单的解决方案是使用转换器。确实,这需要数据绑定,因此它不像源属性上的静态值那样干净。然而,由于源属性上的静态值已经是一个问题,因此很难避免这种方法。以下是我喜欢的解决方案:- 转换器:-
public class BaseUriConverter : IValueConverter
{
private Uri myBaseUri;
public BaseUriConverter()
{
myBaseUri = new Uri(Application.Current.Host.Source.AbsoluteUri);
}
public string AdjustPath { get; set; }
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
Uri uri = new Uri(myBaseUri, AdjustPath);
Uri result = new Uri(uri, (string)parameter);
return result.ToString();
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException("This converter only works for one way binding");
}
}
在App.Xaml中的资源中:-
<local:BaseUriConverter x:Key="BaseUri" AdjustPath=".." />
请注意,“.”的使用允许使用典型用法。其中Xap位于应用程序文件夹的Clientbin文件夹中。因此,图像可以存储在相对于应用程序文件夹的公共文件夹中,无论该站点是在Visual Studio中运行还是在IIS中作为根站点安装,这都是有效的
然后某个页面中某个位置的图像可以如下所示:-
<Image DataContext="0" Source="{Binding Converter={StaticResource BaseUri}, ConverterParameter='images/Test.jpg' }" />
注意,DataContext
prorperty被设置,因此绑定发生,转换器不关心值是什么。在这种情况下,路径也是相对的
在您的特定示例中,您可以在代码中将您的fixed baseURL分配给转换器的AdjustPath属性,但我怀疑,目前的情况下,这将满足您的需要