我有一个处理Plugin.Media的视图模型,可以从手机上拍照。除非我在下面的代码中有下面的代码(查看模型),否则该图像不会显示,然后它可以正常工作,这使我学习MVVM的目标无效。我也尝试过'$output = array();
foreach($input as $fruit){
$output[$fruit['id']][] = $fruit;
}
',并以各种方式使用'FileImageSource
'。
有人可以解释我在做什么错吗?
查看模型:
Source'
XAML:
public string FilePath { get => _filepath; set { _filepath = value; OnPropertyChanged(); } }
private string _filepath;
public Command CaptureImage
{
get
{
return new Command(TakePicture);
}
}
//
private async void TakePicture()
{
if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported)
{
//say something
return;
}
var file = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions
{
Directory = "FoodSnap",
Name = GetTimestamp(DateTime.Now),
PhotoSize = Plugin.Media.Abstractions.PhotoSize.Custom,
CustomPhotoSize = 50
});
if (file == null)
return;
FilePath = file.Path;
}
答案 0 :(得分:0)
如果要在视图模型中使用此视图,请将视图模型的实例分配给页面的Aylmers, Ancaster
,因此,这基本上是代码后面的唯一一行。
BindingContext
现在应该可以了。
更新
从您的XAML中,我看到:
public YourPage()
{
InitializeComponent();
BindingContext = new YourViewModel();
}
其中<Image.Source>
<StreamImageSource Stream="{Binding NewImage}"/>
</Image.Source>
是Stream
的一种,但是您要为其分配一个Stream
。您可以简单地执行以下操作:ImageSource