在c#中,我正在使用xaml设计器创建一个应用程序。
问题:如果我将图像来源改变为另一种图像来源,没有出现:那么,如果图像已经定义,它会变为“无效”(无图像)
我使用了一种方法(我在网上找到)将图像源(字符串)更改为图像(对象)。
我已经多次尝试通过将xaml中的imagesource更改为另一个图像(我放入项目中)来更改某些xaml图片的图像源,但不幸的是,当我这样做时图像不可见。
我使用的图像和方法如下:
MS-APPX:///Assets/bank_employee.jpg“
imageFromXaml.Source = imgCreatedFromMethod.Source;
private static Image srcToImage(string source)
{
Uri imageUri = new Uri(source);
BitmapImage imageBitmap = new BitmapImage(imageUri);
Image img = new Image();
img.Source = imageBitmap;
return img;
}
你们中有谁知道问题是什么吗?
答案 0 :(得分:0)
我遇到了类似的问题,这对我有用:
var imageSource = new BitmapImage();
imageSource.BeginInit();
imageSource.StreamSource = memoryStream;
imageSource.CacheOption = BitmapCacheOption.OnLoad;
imageSource.EndInit();
答案 1 :(得分:0)
您是否尝试将XAML中的源绑定到URI然后更新它?
像这样:
<Image Source="{Binding ImageUri}" />
然后在datacontext中的某个地方有一个属性,如:
public class myClass: INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private Uri imageUri;
public Uri ImageUri
{
get
{
return imageUri;
}
set
{
imageUri = value;
if(PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("ImageUri"));
}
}
}
}
答案 2 :(得分:0)
您是否确认您的方法确实成功并返回正确的图像源?如果确实如此,那么重新分配Source
应该没有问题。如果您将新创建的图像本身加载到UI中,它是否保留其源?
this.Content = imgCreatedFromMethod; // where "this" is the window
顺便说一下,没有必要实现自己的转换功能。如果你有一个有效的XAML字符串,你可以直接调用XAML解析器用来构建图像源的转换器:
using System.Globalization;
using System.Windows.Media;
string stringValue = ...
ImageSourceConverter converter = new ImageSourceConverter();
ImageSource imageSource = converter.ConvertFrom(
null, CultureInfo.CurrentUICulture, stringValue);
转换器实例(在这种情况下为ImageSourceConverter
)也可以由System.ComponentModel.TypeDescriptor.GetConverter(typeof(TypeToConvertTo))
动态检索。
如果您使用TylerD87's answer中的数据绑定,也会自动完成此转换。您还可以查看triggers并按照以下样式定义两个图像:
<Image>
<Image.Style>
<Style TargetType="Image">
<Setter Property="Source" Value="original path" />
<Style.Triggers>
<Trigger ...>
<Setter Property="Source" Value="new path" />
</Trigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>