Изображение не отображается в MVVM XAML Xamarin Forms - PullRequest
0 голосов
/ 17 октября 2018

В течение 2 дней я безуспешно пытался отобразить изображение на своем Xaml из форм MVVM Xamarin.Буду признателен, если кто-нибудь сможет мне помочь с этим вопросом.Вот мой код:

XAML

<Grid>
    <Grid.RowDefinitions>
         <RowDefinition Height="*" />
         <RowDefinition Height="*" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
         <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>
     <Image Source="{Binding GetImageSource}"  Grid.Column="0" Grid.Row="0" HorizontalOptions="Center" />
       <Image Source="camera.png" HorizontalOptions="Center" Grid.Column="0" Grid.Row="1">
       <Image.GestureRecognizers>
           <TapGestureRecognizer Command="{Binding TakePhoto}" />
       </Image.GestureRecognizers>
     </Image>
</Grid>

Моя ViewModel

Использование Plugin.Media (Выбратьизображение из галереи)

Я использовал TapGestureRecognizer

, который работает нормально

private ImageSource imageSource { get; set; }

public ImageSource GetImageSource
{
    get { return imageSource; }
    set
    {
        imageSource = value;
    }
}

if (!CrossMedia.Current.IsPickPhotoSupported)
{
    var message = "Picking image is not supported";
    DependencyService.Get<IMessage>().ShortAlert(message);
    return;
}
var files = await CrossMedia.Current.PickPhotoAsync();
if (files == null)
    return;

GetImageSource = ImageSource.FromStream(() =>
{
    var stream = files.GetStream();

    return stream;
});
var ms = new MemoryStream();
files.GetStream().CopyTo(ms);
files.Dispose();
imgAsBytes = ms.ToArray();
ms.Dispose();

Мне удалось получить изображение в байтах, что нормально,но я не могу отобразить изображение.Заранее спасибо за вашу поддержку.

1 Ответ

0 голосов
/ 18 октября 2018

Попробуйте реализовать INotifyPropertyChanged для вашего класса ViewModel и вызвать PropertyChanged для вашего установщика свойств.Мол,

public event PropertyChangedEventHandler PropertyChanged;
public ImageSource GetImageSource
{
    get { return imageSource; }
    set
    {
        imageSource = value;
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(GetImageSource)));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...