我有一个名为fb.png
的图像,它位于根项目(prtable)中,我将此图像添加到Droid项目中的Resource>drawble
。
Thees是我的MainPage.xaml
代码:
<Image x:Name="img1"></Image>
Thees是我的MainPage.xaml.cs
代码:
public MainPage()
{
InitializeComponent();
ImageSource img = ImageSource.FromResource("App2.fb.png");
img1.Source = img;
img1.Aspect = Aspect.AspectFit;
img1.BackgroundColor = Color.Navy;
}
图像出现后需要改变什么?
答案 0 :(得分:2)
如果文件保存在Resources / Drawable目录中,则使用FromFile,而不是FromResource。 FromResource用于在构建的库中打包为嵌入资源的映像。
您还需要在Resources / Drawable中指定文件的确切名称,因此应该这样做:
public MainPage()
{
InitializeComponent();
ImageSource img = ImageSource.FromFile("fb.png");
img1.Source = img;
img1.Aspect = Aspect.AspectFit;
img1.BackgroundColor = Color.Navy;
}
答案 1 :(得分:0)
这是MVVM绑定图像资源到Image控件的完整实现。您需要将viewmodel设置为XAML所在页面的上下文。另外作为“App2.fb.png”访问似乎很奇怪,它应该只是fb.png。这可能是一个更简单的修复..只需将图像源重命名为Droid&gt;中列出的图像的确切名称。资源
<强> XAML 强>
<Image
Aspect="AspectFit"
Source="{Binding PropertyImageStatusSource}">
基本ViewModel
让您的viewmodel继承自viewmodel基类,以便普遍在您的访问器上实现INotifyPropertyChanged。
public class _ViewModel_Base : INotifyPropertyChanged
{
//figure out what is getting set
public virtual bool SetProperty<T>(ref T storage, T value, [CallerMemberName] string propertyName = null)
{
if (Object.Equals(storage, value))
return false;
storage = value;
OnPropertyChanged(propertyName);
return true;
}
public event PropertyChangedEventHandler PropertyChanged;
//attach handler with property name args to changing property, overridable in inheriting classes if something else needs to happen on property changed
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
}
}
ViewModel
Public MyViewModel : _ViewModel_Base
{
private string ImageStatusSource = "fb.png";
public string PropertyImageStatusSource
{
set { SetProperty(ref ImageStatusSource, value); }
get { return ImageStatusSource; }
}
}