電話画面で自分の現在位置を確認したい。このプロジェクトでは MVVM モデルを使用します。
XAML
<TextBlock Name="XBlock"
Visibility="Visible"
Text="{Binding Path=XValue, Mode=OneWay}"
Margin="0,0,359,0" Height="75"/>
ビューモデル
public string XValue {get ; set ; }
public string YValue { get; set; }
public string ZValue { get; set; }
void _accelerometer_CurrentValueChanged(object sender, SensorReadingEventArgs<AccelerometerReading> e)
{
var position = e.SensorReading.Acceleration;
SmartDispatcher.Dispatch(() =>
{
this.XValue = position.X.ToString("0.0000");
this.YValue = position.Y.ToString("0.0000");
this.ZValue = position.Z.ToString("0.0000");
});
}
ディスパッチャ クラス
public static Dispatcher DispatchObject { get; set; }
public static void Dispatch(Action action)
{
if (DispatchObject == null || DispatchObject.CheckAccess())
{
action();
}
else
{
DispatchObject.InvokeAsync(action);
}
}
TextBlock が空です。加速度計からのデータは正しく読み取られます(Degugで確認済み)。
メソッド XValue を次のように変更する場合:
public string XValue {
get { return "ds"; }
set{ XValue = "fd";}
}
TextBlock には「ds」があります。現在の加速度計データを表示するにはどうすればよいですか?