2010-04-08 61 views
1

所以我试图显示一个图像,这是我的应用程序的路径的ouside。我只有像“images/background.png”这样的相对图像路径,但是我的图像位于其他位置,我可能希望在运行时选择该基本位置,以便将绑定映射到适当的文件夹。如 “E:\ DATA \影像\ background.png” 或 “E:\ DATA \主题\影像\ background.png”将图像源路径绑定到WPF中的相对路径时,可以在我的应用程序目录之外设置基本路径吗?

<Image Source="{Binding Path=ImagePathWithRelativePath}"/> 

有什么办法可以指定无论是在XAML或代码基地背后这些图像的目录?

回答

1

声明静态字段说基本路径在后面的代码

class Utility 
{ 
    public static BasePath; 
} 

分配给它要作为基本路径使用路径

声明转换器是这样的:

public class RelativePathToAbsolutePathConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     //conbine the value with base path and return 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     // return whatever you want 
    } 
} 

更新您使用转换器的绑定

<Window.Resources> 
<local:RelativePathToAbsolutePathConverter x:Key="RelativePathToAbsolutePathConverter"/> 
</Window.Resources> 

<Image Source="{Binding Path=ImagePathWithRelativePath, Converter={StaticResource RelativePathToAbsolutePathConverter}}"/> 
+0

谢谢你指点我正确的方向。 原来我需要在Convert方法中组合路径和相对路径,而不是ConvertBack方法。我仍然认为这是正确的,因为它解决了我的问题。 我想我可能需要一个转换器,只是想可能有不同的解决方案......无论哪种方式......谢谢! – zimmer62 2010-04-09 14:29:36

+0

这是因为我没有测试我的代码,无论如何,感谢指出我的错误,我已经更新了我的答案 – viky 2010-04-09 15:02:51