0

カメラにアクセスして写真を撮ることができました (PictureChooser プラグインを使用)。写真は Android の画像ライブラリに保存されます。画面に表示して削除したいだけです (写真を保存する必要はありません)。どうやってやるの ?(数行のコードは大歓迎です :)) ありがとう !

ps: 多分 mvvmcross の File プラグインで?

編集:ご回答ありがとうございます。私にとって最善の方法は、カスタム バインディングを実行して byte[] を通常の ImageView にバインドすることだと思います。カスタム バインディング (テキストビューとボタン) のサンプルを見て、自分のものを作成しようとしました。

namespace Testa.Droid.Bindings
{
    class PictureBinding : MvxBaseAndroidTargetBinding
    {
        private readonly ImageView _imageView;

        public PictureBinding(ImageView imageView)
        {
            _imageView = imageView;
        }

        public override MvxBindingMode DefaultMode
        {
            get { return MvxBindingMode.OneWay; }
        }

        public override Type TargetType
        {
            get { return typeof (byte[]); }
        }

        public override void SetValue(object value)
        {
            var memoryStream = new MemoryStream((byte[])valyue);
            Bitmap bitmap = BitmapFactory.DecodeStream(memoryStream);
            _imageView.SetImageBitmap(bitmap);
        }
    }
}

Setup.cs 内

protected override void FillTargetFactories(Cirrious.MvvmCross.Binding.Interfaces.Bindings.Target.Construction.IMvxTargetBindingFactoryRegistry registry)
    {
        base.FillTargetFactories(registry);

        registry.RegisterFactory(new MvxCustomBindingFactory<ImageView>("Picture", (imageView) => new PictureBinding(imageView)));
    }

私のViewModelには次のものがあります:

 public byte[] ImageData {
    get { return _imageData; }
    set { _imageData = value; RaisePropertyChanged(() => ImageData); }
 }

そして今、私の見解では、このカスタムバインディングの使用方法がわかりません

<ImageView
  android:id="@+id/image"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content" 
  local:MvxBind="Picture ??, Mode=TwoWay" />

mvvcross vNext|モノドロイド

4

1 に答える 1

0

Web サービスへの画像のアップロードについては、mvvmcross と mono touch を使用した Web サービスへの写真のアップロードで説明されています。

ImageView で画像を表示する方法については、「写真を撮って選択し、最初に保存せずに ImageView に表示する」で説明しています (MvvmCross を使用)。


これらのヒットを見つけるために、「mvvmcross」と「picture」という単語を含む StackOverflow 検索ボックスを使用しました - https://stackoverflow.com/search?q=mvvmcross+picture


更新後に更新します (これを行わないようにしてください - 新しい質問をしてみてください - いつでも相互参照できます)。

あなたのアップデートのバインディング コードを少し変更しました。これには文字列とストリーム、および byte[] が含まれていました。そのため、すべてを byte[] レベルに落としてから、ViewModel に byte[] プロパティを追加しました。

バインディングを使用するには、次を使用できるようになりました。

 <ImageView
     android:layout_width="200dp"
     android:layout_height="200dp"
     local:MvxBind="Picture ImageBytes"
     />

TwoWay は必要ないことに注意してください。TwoWay は、View が ViewModel に変更を送信する必要がある場合 (ユーザーがテキスト ボックスにテキストを入力する場合など) に使用されます。

于 2013-02-15T12:33:41.323 に答える