(WPF)通过代码将图像绑定到URL不起作用



我到处找,一无所获,最后决定问一下。

我有一个。net 5.0 WPF项目,我正在工作,我必须绑定一个URL(在线图像)到我的窗体上的图像的源。

我已经试过了:

CoverImage.Source = new BitmapImage("https://somesite..com/img.png");

以及通过XAML:

绑定它
///XAML:
<Image Name="CoverImage"
Source="{Binding PreviewSource}"/>
///C#
public string PreviewSource { get; set; } = "https://somesite..com/img.png";

我尝试过其他解决方案,例如从HrrpRequest获取图像,然后通过MemoryStream创建它。

使用本地映像(在pc上)工作没有问题。

编辑:mm8的解决方案开始工作似乎没有任何原因(我没有碰代码自从第一次测试)

new BitmapImage(new Uri("https://www.google.se/images/branding/googlelogo/2x/googlelogo_color_92x30dp.png"))` 

<Image Name="CoverImage" Source="https://www.google.se/images/branding/googlelogo/2x/googlelogo_color_92x30dp.png"/>

确保您的URL是有效的,并且可以从您的客户端机器访问。

您确定数据上下文正确吗?它在下面的应用程序中为我工作。

<<p>Xaml代码/strong>
<Grid>
<Image Name="CoverImage" Source="{Binding ImageSource}"/>
</Grid>

ViewModel

class MainWindowViewModel : ViewModelBase
{
private BitmapImage _imageSource;
public BitmapImage ImageSource
{
get => _imageSource;
set => SetProperty(ref _imageSource, value);
}
public MainWindowViewModel()
{
ImageSource = new BitmapImage(new Uri("https://www.google.se/images/branding/googlelogo/2x/googlelogo_color_92x30dp.png"));
}
}

ViewModelBase

public abstract class ViewModelBase : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected virtual bool SetProperty<T>(ref T member, T value, [CallerMemberName] string propertyName = null)
{
if (EqualityComparer<T>.Default.Equals(member, value))
{
return false;
}
member = value;
OnPropertyChanged(propertyName);
return true;
}
protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
=> PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}

MainWindow.xaml.cs

public MainWindow()
{
DataContext = new MainWindowViewModel();
InitializeComponent();

}

最新更新