Создать конвертер для преобразования имени файла и переменной среды в путь:
public class EnvironmentVariableConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return Path.Combine(Environment.GetEnvironmentVariable((string)parameter), (string)value);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return null;
}
}
Вы должны проверить, существует ли переменная окружения и являются ли параметры объекта строками. Я пропустил эти проверки для краткости.
Вот XAML:
<Window.Resources>
<l:EnvironmentVariableConverter x:Key="EnvironmentVariableConverter" />
<s:String x:Key="SD">SD.png</s:String>
</Window.Resources>
<Grid>
<Image Source="{Binding Source={StaticResource SD},
Converter={StaticResource EnvironmentVariableConverter},
ConverterParameter=test}"
/>
</Grid>
«SD.png» теперь является ресурсом, так что вы можете связываться с ним, не требуя отдельной модели представления. ConverterParameter
передает имя переменной среды.