2010-04-08 2 views
1

Итак, я пытаюсь отобразить изображение, которое представляет собой путь моего приложения. У меня есть только относительный путь изображения, такой как «images/background.png», но мои изображения находятся где-то в другом месте. Возможно, мне захочется выбрать это базовое местоположение во время выполнения, чтобы привязка отображалась в правильной папке. Такие, как "E: \ Data \ Images \ background.png" или "E: \ Data \ тема \ образы \ background.png"Можно ли установить базовый путь за пределами моего каталога приложений при связывании пути источника изображения с относительным путем в WPF?

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

Есть ли способ указать либо в XAML или код за базу каталог для этих изображений?

ответ

1

Объявите статическое поле говорят BasePath в коде позади

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 
    } 
} 

Update ваша привязка для использования преобразователя

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

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

Спасибо, что указали мне правильное направление. Оказывается, мне нужно объединить путь и относительный путь в методе Convert, а не метод ConvertBack. Я по-прежнему отмечаю это право, поскольку он решил мою проблему. Я думал, что мне может понадобиться конвертер, и просто думал, что может быть другое решение ... в любом случае ... Спасибо! – zimmer62

+0

это было coz, я не тестировал свой код, так или иначе, спасибо за указание моей ошибки, я обновил свой ответ – viky