private void Service_StrokeEnded(object sender, StrokeEndedEventArgs e)
        {
            Dispatcher.Invoke(DispatcherPriority.Background, new Action(() =>
            {
                var pathPart = e.PathPart;
                var data     = pathPart.Data.GetEnumerator();


                //Data is stored XYW
                float x = -1;
                float y = -1;
                float w = -1;

                if (data.MoveNext())
                {
                    x = data.Current;
                }

                if (data.MoveNext())
                {
                    y = data.Current;
                }

                if (data.MoveNext())
                {
                    //Clamp to 0.0 -> 1.0
                    w = Math.Max(0.0f, Math.Min(1.0f, (data.Current - 1.0f) * pFactor));
                }

                var point = new System.Windows.Input.StylusPoint(x * m_scale, y * m_scale, w);
                Dispatcher.Invoke(DispatcherPriority.Background, new Action(() =>
                {
                    _strokes[_strokes.Count - 1].StylusPoints.Add(point);
                    NotifyPropertyChanged("Strokes");
                }));

                m_addNewStrokeToModel = true;
            }));
        }
 private void Service_StrokeEnded(object sender, StrokeEndedEventArgs e)
 {
     Debug.WriteLine("Stroke End");
 }