MVVM 패턴에 문제가 있습니다. I는 해당 광고 온도 = Convert.ToDouble (args.Reading.HeadingMagneticNorth)에 debugingWindows Phone 8.1의 Compass COMException OnPropertyChanged MVVM
class MagnetometrViewModel : INotifyPropertyChanged
{
private Compass compass;
double temp;
public MagnetometrViewModel()
{
compass = Compass.GetDefault();
CompassControl_Loaded();
}
private double heading;
public double Heading
{
get
{
return heading;
}
set
{
heading = value;
OnPropertyChanged("Heading");
}
}
private void CompassControl_Loaded()
{
compass = Windows.Devices.Sensors.Compass.GetDefault();
if (compass != null)
{
compass.ReadingChanged += CompassReadingChanged;
}
}
private void CompassReadingChanged(Windows.Devices.Sensors.Compass sender, Windows.Devices.Sensors.CompassReadingChangedEventArgs args)
{
temp = Convert.ToDouble(args.Reading.HeadingMagneticNorth);
Heading = temp;
//Heading = Convert.ToDouble(args.Reading.HeadingMagneticNorth);
}
#region PropertyChanged
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName = null)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
#endregion
}
; 그것은 결과를 얻을 수 있지만, OnPropertyChanged를 내 다른 방법은 예외가 발생합니다 : 함께 System.Runtime.InteropServices.COMException 당신이 실버 라이트 윈도우 폰 응용 프로그램을하고 있다면 당신은 UI 스레드에 PropertyChanged
이벤트를 발생 할 필요가
Silverlight 또는 Universal 응용 프로그램에 있나요? –
Windows phone에서 COMException이 발생하는 이유는 무엇입니까? –
Windows 용 Windows Phone 응용 프로그램입니다. – Criss