0

IO アプリケーションで表示するためにバイト [] を文字列にフォーマットしようとしています。ここで問題は、コンバーターが起動しないことです。

コンバータークラス

class ByteArrayToTextValueConverter : MvxValueConverter<byte[], string>
{

    protected override string Convert(byte[] value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (value is byte[])
        {
            return "test";
            /*
            var byteArray = (byte[])value;
            return Encoding.UTF8.GetString(byteArray, 0, byteArray.Length);
             */
        }
        return "";
    }

    protected override byte[] ConvertBack(string value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (value is string)
        {
            var text = (string)value;
            return Encoding.UTF8.GetBytes(text);
        }
        return new byte[] { };
    }
}

スクラップを表示:

var source = new MvxSimpleTableViewSource(
    TableView,
    SubtitleDetailViewCell.Key,
    SubtitleDetailViewCell.Key
);
TableView.Source = source;
TableView.RowHeight = 50;

TableView.RegisterClassForCellReuse(typeof(SubtitleDetailViewCell), SubtitleDetailViewCell.Key);

var set = this.CreateBindingSet<ObservationsView, ObservationsViewModel>();
set.Bind(source).To(vm => vm.Observations);
//set.Bind(source).For(s => s.SelectionChangedCommand).To(vm => vm.SelectedObsCommand);
set.Apply();

TableView.ReloadData();

カスタム セル クラス:

public SubtitleDetailViewCell(IntPtr handle)
    : base(handle)
{
    Initialize();

    this.DelayBind(() =>
    {
        var set = this.CreateBindingSet<SubtitleDetailViewCell, ObservationMedicale>();
        set.Bind(MainLbl).To(observation => observation.Texte).WithConversion("ByteArrayToText");
        set.Bind(SubLeftLbl).To(observation => observation.SaisieLe);
        set.Bind(SubRightLbl).To(observation => observation.PraticienNom);
        set.Apply();

    });
}
4

1 に答える 1

0

ByteArrayToTextValueConverterこれは、あなたがそうではinternalなく、publicMvvmCross がそれにアクセスする権限を持っていないという事実と同じくらい単純かもしれません。

保持したい場合はinternal、次の代替形式を使用することもできますWithConversion

  .WithConversion(new ByteArrayToTextValueConverter(), null);

ByteArrayToTextそれを超えて、なぜリストに変換を適用するのかもわかりません-ソースがオブジェクトObservationsのコレクションであるように見えますObservationMedicale

于 2013-10-29T14:55:38.777 に答える