如何在listview中显示用户选择的图像
我不熟悉使用xamarin进行移动开发。 我正在使用xamarin表单开发一个联系人簿项目。在下面显示的代码中,我的目标是提供一个listview,它将根据用户提供的呼叫者数量动态增加 列表视图将显示一个按钮,该按钮将从gallery中获取用户提供的联系人图像、联系人姓名的输入字段和显示用户选择的联系人图像的圆圈 我希望列表视图中的每个图像都基于用户为特定联系人姓名选择的图像 虽然我能够成功地从用户检索图像。它没有被展示 请帮助我,让我知道我做错了什么 LocalContactInfo.xaml如何在listview中显示用户选择的图像,listview,xamarin,xamarin.forms,imagesource,Listview,Xamarin,Xamarin.forms,Imagesource,我不熟悉使用xamarin进行移动开发。 我正在使用xamarin表单开发一个联系人簿项目。在下面显示的代码中,我的目标是提供一个listview,它将根据用户提供的呼叫者数量动态增加 列表视图将显示一个按钮,该按钮将从gallery中获取用户提供的联系人图像、联系人姓名的输入字段和显示用户选择的联系人图像的圆圈 我希望列表视图中的每个图像都基于用户为特定联系人姓名选择的图像 虽然我能够成功地从用户检索图像。它没有被展示 请帮助我,让我知道我做错了什么 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>
您似乎试图使用
BindingContext
,因为您正在设置Source=“{Binding image}”
,但是EventHandler中的“image”变量显然没有绑定到单元格,并且ListView的ItemsSource
是一个IEnumerable
(这确实不会很好地工作)
如果列表单元格确实具有BindingContext
,则可以使用“sender”参数在单击处理程序中检索它
e、 g.((VisualElement)sender.BindingContext.imageSource=imageSource.FromFile(file.Path)代码>
当您指出您仍然存在问题时,我可以为您设置示例代码。a。您似乎正在将ListView的ItemSource分配给空枚举。B您单击的句柄创建了一个本地图像源,然后对其不做任何操作。一旦处理程序完成,它就会超出范围。@Jason我应该在ListView的ItemSource中提到什么,以及关于我使用代码'circleImage.source=ImageSource.FromFile(file.Path);'但在构建过程中,我遇到了一个错误,即“名称circleImage在当前上下文中不存在”,因为我对所有这些都不熟悉,我无法理解我做错了什么。您可能希望将ListView绑定到列表。Xamarin有许多关于使用数据绑定的优秀文章和示例,您应该认真阅读它们。
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;
}
}