mvvmcross xamarin.forms 图片选择器

mvvmcross xamarin.forms PictureChooser

我正在尝试使用 PictureChooser 插件开发一个照片应用程序。我看到示例使用 Xamarin.iOS。我在谷歌上搜索了插件使用 Xamarin.Forms 但找不到的示例。我了解标签、文本编辑器和按钮的绑定是如何工作的;然而,顺便说一句,页面的图像控件和视图模型的 byte[] 的绑定让我很吃力。

DAA.UI 项目:

在CameraPage.XAML中:

<Image x:Name="MyImage"
               Source="{Binding Bytes, Converter={StaticResource InMemoryImage}}"
               Aspect="Fill"
               HeightRequest="{OnPlatform iOS=300, Android=250}"
               WidthRequest="{OnPlatform iOS=300, Android=250}"
               HorizontalOptions="Center" />

在App.XAML中:

<?xml version="1.0" encoding="utf-8" ?>
<Application
    x:Class="DamageAssessmentApp.UI.App"
    xmlns="http://xamarin.com/schemas/2014/forms"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:d="clr-namespace:MvvmCross.Forms;assembly=MvvmCross.Forms"
    xmlns:resources="clr-namespace:DAA.UI.Resources"
    xmlns:local="using:DAA.UI"
    xmlns:nativeValueConverters="using:DAA.UI.NativeValueConverters">
    <Application.Resources>

        <!--  Application resource dictionary  -->
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <resources:Colors />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
        <nativeValueConverters:NativeInMemoryImageValueConverter x:Key="InMemoryImage"/>
    </Application.Resources>
</Application>

值转换器文件:

using MvvmCross.Forms.Converters;
namespace DAA.UI.NativeValueConverters
{
    public class NativeInMemoryImageValueConverter : MvxNativeValueConverter<MvxInMemoryImageValueConverter>
    {
    }
}

编译器在值转换器文件中找不到 MvxInMemoryImageValueConverter。

如果您正在使用 MVVMCross,您应该找到一个适用于 Xamarin.Forms 的示例,在这种情况下,他们的 Github.

是一个很好的起点

或者您必须在每个平台中实现它并使用 DependencyService 来获取实现

其他选择

  1. Xamarin 社区工具包

相机应用程序的另一个替代方案是 Xamarin 社区工具包 Camera View. In that same link there is an example. But there are more examples in their Github。这与 Xamarin.Forms 完全兼容,并且可以更好地控制 CameraView

  1. Xamarin.Essentials

Xamarin.Essentials 提供 MediaPicker 让用户从图库上传照片或拍摄新照片。但是照片的动作由 OS 处理,所以对你来说它就像一个黑盒子。您调用该函数,并获取照片。