我是使用xamarin进行移动开发的新手。 我正在使用xamarin表单开发一个联系簿项目。在下面显示的代码中,我的目标是提供一个列表视图,该列表视图将根据用户提供的呼叫者数量动态增加。
列表视图将显示一个按钮,该按钮将提取用户从图库中提供的联系人图片,联系人姓名的输入字段和圈子图片显示用户选择的联系人图像。
我希望 listview 中的每张图片都基于用户为该特定联系人姓名选择的图片。
虽然我成功地从用户那里检索图像。它没有显示出来。
请帮助,让我知道我做错了什么。
LocalContactInfo.xaml
<ListView x:Name="lstView">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout Orientation="Horizontal">
<Button x:Name="pickPhoto" Text="pick photo" Clicked="Handle_Clicked"/>
<Entry Placeholder="name" />
<ic:CircleImage
Source="{Binding image}"
WidthRequest="70"
HeightRequest="70"
Aspect="AspectFill"
x:Name="circleImage" />
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
LocalContactInfo.xaml.cs
public partial class LocalContactInfo: ContentPage
{
async void Handle_Clicked(object sender, System.EventArgs e)
{
if (!CrossMedia.Current.IsPickPhotoSupported)
{
await DisplayAlert("Photos Not Supported", ":( Permission not granted to photos.", "OK");
return;
}
var file = await Plugin.Media.CrossMedia.Current.PickPhotoAsync(new Plugin.Media.Abstractions.PickMediaOptions
{
PhotoSize = Plugin.Media.Abstractions.PhotoSize.Medium
});
if (file == null)
return;
var image = ImageSource.FromFile(file.Path);
}
int count;
public LocalContactInfo()
{
InitializeComponent();
LocalContactInformation caller= new LocalContactInformation();
count = Convert.ToInt32(caller.callerCount);
BindingContext = null;
var icon = Enumerable.Range(0, 2); //enter the number of callersin range i.e. count
lstView.ItemsSource = icon;
}
}
答案 0 :(得分:0)
您好像正在尝试使用BindingContext
,因为您正在设置Source="{Binding image}"
,但是&#39;图像&#39;您的EventHandler中的变量显然不会绑定到单元格,而ListView的ItemsSource
是IEnumerable<int>
(这真的很好地赢了)。
如果列表Cell确实有BindingContext
,您可以使用&#39;发件人&#39;在您的点击处理程序中检索它。参数。
e.g。 ((VisualElement)sender).BindingContext.imageSource = ImageSource.FromFile(file.Path);
当您表明您仍然遇到问题时,我可以为您设置示例代码。