0

タイプBitmapImageをWindows8アプリケーション(下記)のクラスに追加すると、次のようになります。

Cannot serialize member vehicleImage' of type 'Windows.UI.Xaml.Media.Imaging.BitmapImage', see inner exception for more details.

内部例外の詳細:

 System.Runtime.InteropServices.WindowsRuntime.RuntimeClass is inaccessible due to its protection level. Only public types can be processed.

コード:

public BitmapImage vehicleImage

        {
            get
            {
                return m_vehicleImage;
            }
            set
            {
                Uri _baseUri = new Uri("ms-appx:///");
                BitmapImage imageBitmap = new BitmapImage(new Uri(_baseUri, ImagePath));
                m_vehicleImage = imageBitmap;
                OnPropertyChanged("vehicleImage");
            }
        }

        private async void SetImage()
        {
            var file = await Windows.Storage.KnownFolders.PicturesLibrary.GetFileAsync(ImagePath);
            var fileStream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read);
            var img = new BitmapImage();
            img.SetSource(fileStream);

            vehicleImage = img;
        }

オブジェクトをXMLにシリアル化しています。このコードを削除すると、すべてが機能します。ユーザーが自分のコンピューターから選択した画像を使用できるようにしたいのです(そのため、BitmapImageタイプを使用しようとしています)。

どんな助けでも大歓迎です。

4

1 に答える 1

2

System.Xml.Serialization 名前空間を使用して、これらの種類のプロパティの [XMLIgnore()] にアクセスします。

画像がどこにあるかの文字列を保存したいはずですよね?次に、文字列をシリアル化し、BitMapImage を [XMLIgnore()] します。

これにより、シリアル化が発生している間も BitMap イメージにアクセスできます。

于 2013-02-01T04:27:01.833 に答える