我在c#中创建一个简单的Windows应用商店应用。当我绑定我的图像控件以显示代码隐藏的图像时,我的屏幕变黑。谁知道我怎么解决这个问题?
ImageService类
public class ImageService
{
public Image Image { get; set; }
public ImageService()
{
var uri = new System.Uri("ms-appx:///assets/Logo.scale-100.png");
var bmp = new BitmapImage(uri);
Image.Source = bmp;
}
}
XAML文件
<Image x:Name="image" HorizontalAlignment="Left" Height="223" Margin="394,279,0,0" VerticalAlignment="Top" Width="305" Source="{Binding Image, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Stretch="UniformToFill"/>
答案 0 :(得分:1)
使用此:
public class ImageService
{
public Uri Image { get; set; }
public ImageService()
{
Image = new Uri("ms-appx:///assets/Logo.scale-100.png");
}
}
图片的Source
属性属于ImageSource
,可以轻松替换为Uri
。 (MSDN)
答案 1 :(得分:0)
XAML中的图像具有内置转换器,因此您只需绑定到Uri,就不必在服务中创建图像。
您的服务并未实施INotifyPropertyChanged,因此如果您在构造函数外部的服务中设置图片,您的视图将无法更新。
我没有在您的代码中看到您实例化图片的位置。图像将为null,因此当您加载视图时,图像将为null,从而导致视图上出现空白图像。
答案 2 :(得分:0)
public class ImageService : INotifyPropertyChanged
{
private Uri _uri;
public Uri Uri
{
get { return _uri; }
set
{
_uri = value;
OnPropertyChanged();
}
}
public ImageService()
{
Uri = new Uri("ms-appx///assets/Logo.scale-100.png");
}
public event PropertyChangedEventHandler PropertyChanged;
[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}