如何在列表视图中显示用户选择的图像

时间:2017-02-25 15:10:51

标签: listview xamarin xamarin.forms imagesource

我是使用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;
        }

}

1 个答案:

答案 0 :(得分:0)

您好像正在尝试使用BindingContext,因为您正在设置Source="{Binding image}",但是&#39;图像&#39;您的EventHandler中的变量显然不会绑定到单元格,而ListView的ItemsSourceIEnumerable<int>(这真的很好地赢了)。

如果列表Cell确实有BindingContext,您可以使用&#39;发件人&#39;在您的点击处理程序中检索它。参数。

e.g。 ((VisualElement)sender).BindingContext.imageSource = ImageSource.FromFile(file.Path);

当您表明您仍然遇到问题时,我可以为您设置示例代码。