我有一个应用程序,我希望它在调用命令时加载图像。但是问题是,没有负载,也没有损坏。我只是看不到我的形象。我还确保将数据上下文设置为视图模型。
XAML:
<Image Grid.Column="3" Source="{Binding Path=LoadingImage, Mode=TwoWay}" Width="35" Height="35"/>
ViewModel:
private Image _loadingImage = new Image();
public Image LoadingImage
{
get => _loadingImage;
set
{
_loadingImage = value;
RaisePropertyChanged(nameof(LoadingImage));
}
}
//Method called by the command... i debugged it and it gets here just fine
private void GetDirectories()
{
FolderBrowserDialog folderBrowseDialog = new FolderBrowserDialog();
DialogResult result = folderBrowseDialog.ShowDialog();
if (result == DialogResult.OK)
{
//This is how I am getting the image file
LoadingImage.Source = new BitmapImage(new Uri("pack://application:,,,/FOONamespace;component/Resources/spinner_small.png"));
//More code below
}
}
某些其他设置,我的.png文件具有以下属性:
Build Action: Resource
Copy to Output Directory: Copy if newer
这是我的抓头器。我究竟做错了什么?非常感谢。
答案 0 :(得分:1)
您不能将Image元素用作另一个Image元素的Source属性的值。
将属性类型更改为ImageSource:
private ImageSource _loadingImage;
public ImageSource LoadingImage
{
get => _loadingImage;
set
{
_loadingImage = value;
RaisePropertyChanged(nameof(LoadingImage));
}
}
并分配如下属性:
LoadingImage = new BitmapImage(
new Uri("pack://application:,,,/FOONamespace;component/Resources/spinner_small.png"));
除此之外,将绑定模式设置为TwoWay是没有意义的
<Image Source="{Binding LoadingImage}" />
也不需要复制到输出目录,因为构建操作Resource
使映像文件成为已编译到程序集中的程序集资源。