Xaml 图像不';t以Xamarin.forms(PCL)形式显示
我有一张名为Xaml 图像不';t以Xamarin.forms(PCL)形式显示,xaml,xamarin,xamarin.forms,Xaml,Xamarin,Xamarin.forms,我有一张名为fb.png的图像,它位于根项目(prtable)中,我将此图像添加到Droid项目中的Resource>drawble 这是我的主页。xaml代码: <Image x:Name="img1"></Image> public MainPage() { InitializeComponent(); ImageSource img = ImageSource.FromResource("App2.fb.png");
fb.png
的图像,它位于根项目(prtable)中,我将此图像添加到Droid项目中的Resource>drawble
这是我的主页。xaml
代码:
<Image x:Name="img1"></Image>
public MainPage()
{
InitializeComponent();
ImageSource img = ImageSource.FromResource("App2.fb.png");
img1.Source = img;
img1.Aspect = Aspect.AspectFit;
img1.BackgroundColor = Color.Navy;
}
改变的是需要显示图像?这里是MVVM绑定图像资源到图像控件的完整实现。您需要将viewmodel设置为XAML所在页面的上下文。同样,访问“App2.fb.png”看起来很奇怪,它应该是fb.png。这可能是一个更简单的解决办法。。只需将图像源重命名为Droid>resources中列出的图像的确切名称 XAML
<Image
Aspect="AspectFit"
Source="{Binding PropertyImageStatusSource}">
如果文件保存在Resources/Drawable目录中,则使用FromFile,而不是FromResource。FromResource用于打包为内置库中的嵌入式资源的图像 您还需要指定文件在参考资料/Drawable中显示的确切名称,因此应该这样做:
public MainPage()
{
InitializeComponent();
ImageSource img = ImageSource.FromFile("fb.png");
img1.Source = img;
img1.Aspect = Aspect.AspectFit;
img1.BackgroundColor = Color.Navy;
}
您说您的图像名为fb.png,但在代码中您称其为“App2.fb.png”。您需要在ImageSource.FromResource中使用“fb.png”,不幸的是,它不起作用。我已经在
public MainPage()
方法中添加了上述代码隐藏?我认为这实际上可能是您命名资源的方式。更新答案以反映。希望人们能说出他们为什么否决投票。属性已更改的基本视图模型方法是text book MVVM Xamarin。视图模型除了设置要绑定的封装属性外,什么也不做。这种方法在我自己的企业应用程序中使用,将在中找到;如果有更好的方法,我总是乐于讨论,说出来,而不是不加解释地投反对票。其他需要尝试的事情:确保参考资料/drawable中的Android项目中的fb.png具有AndroidResource的BuildAction。然后发布整个MainPage.xaml文件,因为容器视图可能会导致问题。更具体地说,你所说的“它不工作”是什么意思。是因为图像没有出现吗?它崩溃了?我将buildAction
从content
设置为AndroidResource
,图像显示出来。
Public MyViewModel : _ViewModel_Base
{
private string ImageStatusSource = "fb.png";
public string PropertyImageStatusSource
{
set { SetProperty(ref ImageStatusSource, value); }
get { return ImageStatusSource; }
}
}
public MainPage()
{
InitializeComponent();
ImageSource img = ImageSource.FromFile("fb.png");
img1.Source = img;
img1.Aspect = Aspect.AspectFit;
img1.BackgroundColor = Color.Navy;
}