gpt4 book ai didi

c# - 使用 IValueConverter 动态加载图像源

转载 作者:行者123 更新时间:2023-11-30 15:35:29 26 4
gpt4 key购买 nike

我在使用 IValueconverter 和动态加载行网格图像时遇到问题:

public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{

string Type = (string)value;
Uri uri;
try
{
uri = new Uri("/XConsole;component/Images/" + Type + ".png", UriKind.Relative);
return new System.Windows.Media.Imaging.BitmapImage(uri) { CacheOption = BitmapCacheOption.None };
}
catch (Exception e)
{
//donothing
}
uri = new Uri("/XConsole;component/Images/Type_SYSTEM.png", UriKind.Relative);
return new System.Windows.Media.Imaging.BitmapImage(uri) { CacheOption = BitmapCacheOption.None };

}

我想将我的对象的“类型”传递给转换器并加载不同的图像:

 <Image Grid.Column="0"  Width="25" Height="25" Margin="2,0" Source="{Binding Path=Type, Converter={StaticResource imageConverter}}" >

但是有问题,因为没有加载图片!

如果我静态加载,没问题:

 <Image Grid.Column="0"  Width="25" Height="25" Margin="2,0" Source="/XconsoleTest;component/Images/Type_DB.png" >

我在 UserControl.Resources 中加载了我的转换器:

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

救救我!!

最佳答案

如果您在代码中创建 URI,则必须编写完整的 Pack URI包括 pack://application:,,, 部分。在 XAML 中,这不是必需的,因为它是由 string-to-ImageSource TypeConverter 自动添加的。

var type = (string)value;
var uri = new Uri("pack://application:,,,/XConsole;component/Images/" + type + ".png");

请注意,上面的代码示例使用小写的 type 标识符而不是 Type 以避免与 Type 类混淆。

关于c# - 使用 IValueConverter 动态加载图像源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14858189/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com