2015-08-10 2 views
0

Я создаю приложение Silverlight Windows Phone 8.1.Windows Phone - не может вернуться в мое приложение .SmsComposeTask luncher

Когда я называю этот метод:

private void btn_send_Click(object sender, EventArgs e) 
    { 
     object o; 
     ContactData dane = null; 
     if (PhoneApplicationService.Current.State.TryGetValue("Contact", out o)) 
     { 
      dane = o as ContactData; 
      SmsComposeTask objSendsms = new SmsComposeTask(); 
      objSendsms.To = (dane.Number).ToString(); 
      objSendsms.Body = input.Text.ToString(); 
      objSendsms.Show(); 

     } 

    } 

И тогда, если только думать, что я хочу сделать, это нажать key_back кнопка: this_photo_will_show

Я знаю, что после того, как я называю btn_send_Click эта функция будет открыта новый экземпляр приложения Microsoft. Чтобы быть более конкретным, это будет эта функция .Show от SmsComposeTask объекта. Но как общаться с этим приложением? Как вернуться к моему собственному приложению с помощью кнопки key_back?

+0

Что такое исключение ион? (Параметр e in) –

+0

Необработанное исключение типа «System.Runtime.Serialization.InvalidDataContractException» произошло в Microsoft.Phone.Interop.ni.dll Дополнительная информация: Тип «System.Windows.Media.ImageSource» не может быть сериализован , Подумайте о том, чтобы маркировать его атрибутом DataContractAttribute и маркировать все его элементы, которые вы хотите сериализовать с атрибутом DataMemberAttribute. Кроме того, вы можете гарантировать, что тип является общедоступным и имеет конструктор без параметров: все публичные члены этого типа будут сериализованы, и никаких атрибутов не потребуется. –

+0

, когда я не загружаю изображения, которые он работает .. но я хочу загрузить мои изображения;) Я пытаюсь с [DataContract] и [DataMember], но все равно не работаю. –

ответ

0

И наконец, я нашел разрешение.

1.Change поле в классе

[DataContract] 
    public class ContactData 
    { 
     [DataMember] 
     public byte[] Image 
     { 
      get; 
      set; 
     } 

     public byte[] ConvertToBytes(BitmapImage bitmapImage) 
    { 
     byte[] data = null; 
     using (MemoryStream stream = new MemoryStream()) 
     { 
      WriteableBitmap wBitmap = new WriteableBitmap(bitmapImage); 
      wBitmap.SaveJpeg(stream, wBitmap.PixelWidth, wBitmap.PixelHeight, 0, 100); 
      stream.Seek(0, SeekOrigin.Begin); 
      data = stream.GetBuffer(); 
     } 

     return data; 
    } 

    } 

2.Add класс для проекта:

using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Data; 
using System.Windows.Media.Imaging; 
using System.Globalization; 
using System.Windows; 

namespace KontaktySilver 
{ 
    public class BytesToImageConverter : IValueConverter 
    { 
     public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 

     { 
      if (value != null && value is byte[]) 
      { 
       byte[] bytes = value as byte[]; 
       using(MemoryStream stream = new MemoryStream(bytes)){ 
       BitmapImage image = new BitmapImage(); 

       image.SetSource(stream); 
       MessageBox.Show("proba"); 
       return image; 
       } 
      } 

      return null; 

     } 

     public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
     { 
      throw new NotImplementedException(); 
     } 

    } 
} 

3.Add xmlns:local="clr-namespace:YourProjectName"

4.Change связывание в XAML:

<Image Source="{Binding Image, Converter={StaticResource BytesToImageConverter}}" Stretch="Fill" /> 
Смежные вопросы