[更新]
因此,通过使用提供的Dependency Injector,我发现了一种非常简单的方法来解决此问题,并且可以从Android的资产中加载东西。 我将不得不寻求如何在iOS中执行此操作,但现在这不是一个大问题。
但是,更令人担忧的是,单个单元格未按应有的方式显示。
XAML的经修订的(和相关的)位如下:
<ViewCell>
<StackLayout Orientation="Vertical">
<Label Text="{Binding Name}" FontAttributes="Bold" FontSize="Large" HorizontalOptions="StartAndExpand" VerticalOptions="Start"></Label>
<StackLayout Orientation="Horizontal">
<Label Text="{Binding Email}" HorizontalOptions="Fill" VerticalOptions="Start"></Label>
<Image Source="{Binding image.Source}" HorizontalOptions="EndAndExpand"></Image>
</StackLayout>
</StackLayout>
</ViewCell>
因此,当前显示为:
->第1行=完美
->第2行:电子邮件=完美,图片=仅有一小部分可见
我怀疑这与布局有关,但我不知道为什么要这样做。
请提出建议!
[OLD POST]
我有一个XAML文件,除了图像元素外,它可以正确显示在Android预览窗格中。这是我正在使用的XAML:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:App3"
x:Class="App3.MainPage">
<StackLayout>
<!-- Place new controls here -->
<Label Text="WPF test for POD"
HorizontalOptions="Center"
VerticalOptions="Center" />
<Entry Placeholder="Email address" Keyboard="Email"></Entry>
<Entry Placeholder="Password" IsPassword="True" Text="WobblyDobbly"></Entry>
<Button x:Name="BtnSignIn" Text="Sign In" HorizontalOptions="FillAndExpand" Clicked="BtnSignIn_Clicked">
</Button>
<StackLayout x:Name="slUserInfo" HorizontalOptions="FillAndExpand">
<Entry Placeholder="Name" x:Name="txtName" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"></Entry>
<Entry Placeholder="Email" x:Name="txtEmail" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" Keyboard="Email"></Entry>
<Button Text="Add to list" x:Name="btnAddToList" Clicked="btnAddToList_Clicked" HorizontalOptions="StartAndExpand"></Button>
</StackLayout>
<ListView x:Name="lvItems" VerticalOptions="Start" HorizontalOptions="StartAndExpand">
<ListView.ItemTemplate>
<DataTemplate>
<!--
<TextCell Text="{Binding Name}" Detail="{Binding Email}">
</TextCell>
-->
<ViewCell>
<StackLayout Orientation="Vertical">
<Label Text="{Binding Name}" HorizontalOptions="FillAndExpand" FontAttributes="Bold"></Label>
<Label Text="{Binding Email}" HorizontalOptions="StartAndExpand"></Label>
<Image Source="{Binding image.Source}" HorizontalOptions="End"> </Image>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<Button x:Name="btnAddItem" Text="Add..." HorizontalOptions="Start" Clicked="btnAddItem_Clicked">
</Button>
</StackLayout>
</ContentPage>
在后端,我有以下类:
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;
using Xamarin.Forms;
namespace App3
{
class Item
{
public int Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public Image image { get; set; }
public Item( int AnId, string AName, string AnEmail)
{
Id = AnId;
Name = AName;
Email = AnEmail;
}
}
class ItemList : ObservableCollection<Item>
{
public void Add(string Name, string Email,string AssignedImage, int Id = 0)
{
int ActualID = Id;
Item item = new Item(Id, Name, Email);
if (ActualID == 0)
{
ActualID = NextId();
}
item.image = new Image();
item.image.Source = ImageSource.FromResource(AssignedImage);
Add(item);
}
public int NextId()
{
int CurrentCount = Count;
return ++CurrentCount;
}
}
}
使用UWP项目时,一切正常。 但是,当我在Android上运行此程序时-就像在预览中一样-它不会显示图像。
我的MainPage.xaml.cs如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
namespace App3
{
public partial class MainPage : ContentPage
{
private ItemList model = new ItemList();
public MainPage()
{
InitializeComponent();
lvItems.ItemsSource = model;
model.Add("Andrea", "email@email.com", "App3.arrow_left.png");
slUserInfo.IsVisible = false;
}
private void BtnSignIn_Clicked(object sender, EventArgs e)
{
}
private void btnAddItem_Clicked(object sender, EventArgs e)
{
slUserInfo.IsVisible = true;
}
private void btnAddToList_Clicked(object sender, EventArgs e)
{
model.Add(txtName.Text, txtEmail.Text,"App3.arrow_left.png");
txtName.Text = "";
txtEmail.Text = "";
}
}
}
该图像被标记为EmbeddedResource,位于公共项目下的/ Resources中。
当我以UWP运行它时,图像正确显示。当我将其作为Android应用程序运行时,图像完全不显示。 Android应用程序中没有特殊代码。 我确定我做错了什么,您能指出我正确的方向吗?
P.S。这是我专为Xamarin工作的第一天,所以请不要回避一些基本问题,因为这很容易被我忽略。