我想在我的wpf应用程序中显示图像,并从环境变量中引用其相对源。
我尝试了'{%test%}
'
<Image Source="{%test%}\SD.png" Width="24" Height="24" Margin="2" />
我希望正常使用环境变量会像(test =“ C:\ pics”)<Image Source="C:\pics\SD.png" Width="24" Height="24" Margin="2" />
这样展开,但在编译时会显示错误:
Windows Presentation Foundation不支持“
%test%
”错误 (WPF)项目。
答案 0 :(得分:1)
创建一个转换器,将文件名和环境变量转换为路径:
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
传递环境变量的名称。
答案 1 :(得分:0)
您可以使用提到的@Clemens之类的视图模型,并将计算出的路径作为属性公开,也可以使用将解析路径字符串并最终进行相同计算的转换器。
要将%test%环境变量转换为其实际路径,您需要使用
Environment.GetEnvironmentVariable("test")