【问题标题】:Images shown only when files are included in the project仅当文件包含在项目中时才显示图像
【发布时间】:2014-09-05 15:03:22
【问题描述】:

我有一个 wpf 应用程序,我在其中使用转换器来设置图像源。代码如下:

<UserControl.Resources>
    <converters:ImageSourceConverter x:Key="ImageSourceConverter"/>
</UserControl.Resources>

<Image Source="{Binding Path=MyItem.MyItemId, Converter={StaticResource ImageSourceConverter}, ConverterParameter=MyItems}" Width="150" Height="150"></Image>

还有 C# 代码:

public class ImageSourceConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return String.Concat(@"..\Images\" + System.Convert.ToString(parameter) + "\\", System.Convert.ToString(value).Trim(), ".png");
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return value;
    }
}

当图像包含在我的项目中时,这将起作用。这还不够好。将来用户将上传图片,我不能将它们全部包含在项目中。即使解决方案中不包含 .png 文件,我如何才能显示图像?

【问题讨论】:

    标签: wpf image xaml converter


    【解决方案1】:

    如果您的图像文件夹位于应用程序目录中,则在值转换器中尝试将图像 URI 构造为

    System.AppDomain.CurrentDomain.BaseDirectory + @"\Images\" + System.Convert.ToString(parameter) + "\\", System.Convert.ToString(value).Trim(), ".png");
    

    【讨论】:

    • 图片不在 bin 中。图片文件夹位于相同的级别 als bin 中。
    • 在 AppDomain.CurrentDomain.BaseDirectory 上适当地使用 Path.GetDirectoryName 以到达您想要到达的文件夹级别,其中存在图像文件夹。但是,如果图像保存在安装目录中,您最终可能会遇到麻烦,因为用户访问控制不允许您将用户文件保存在 C:\Program Files 中。最好在 Application Data 文件夹中为您保留一个空间,而不是 System.AppDomain.CurrentDomain.BaseDirectory 使用 Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) 来构建您的 Images 文件夹的路径。
    【解决方案2】:

    为了实现这一点,首先您必须决定要将图像保存在哪里,以便您的应用程序可以访问这些图像,并且将来用户也可以将图像上传到该位置。

    如果你使用上传文件夹的绝对路径会更好,并且只能从那里访问所有图像。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-24
      • 2023-03-26
      • 1970-01-01
      • 2013-05-23
      • 2016-09-11
      • 1970-01-01
      • 2019-01-03
      • 1970-01-01
      相关资源
      最近更新 更多