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 来获取实现
其他选择
- Xamarin 社区工具包
相机应用程序的另一个替代方案是 Xamarin 社区工具包 Camera View. In that same link there is an example. But there are more examples in their Github。这与 Xamarin.Forms 完全兼容,并且可以更好地控制 CameraView
- Xamarin.Essentials
Xamarin.Essentials 提供 MediaPicker 让用户从图库上传照片或拍摄新照片。但是照片的动作由 OS 处理,所以对你来说它就像一个黑盒子。您调用该函数,并获取照片。
我正在尝试使用 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 来获取实现
其他选择
- Xamarin 社区工具包
相机应用程序的另一个替代方案是 Xamarin 社区工具包 Camera View. In that same link there is an example. But there are more examples in their Github。这与 Xamarin.Forms 完全兼容,并且可以更好地控制 CameraView
- Xamarin.Essentials
Xamarin.Essentials 提供 MediaPicker 让用户从图库上传照片或拍摄新照片。但是照片的动作由 OS 处理,所以对你来说它就像一个黑盒子。您调用该函数,并获取照片。