in WindowsSmartInk/EBC_InkDemo/Views/MainPage.xaml.cs [56:124]
public MainPage()
{
this.InitializeComponent();
_dataContextViewModel = this.DataContext as MainViewModel;
_inkTimer = new DispatcherTimer() { Interval = TimeSpan.FromMilliseconds(_dataContextViewModel.InkProcessingDelay) };
_dataContextViewModel.InkProcessingDelayChanged += (s, e) => {
Debug.WriteLine($"InkDelayChanged");
_inkTimer.Stop();
_inkTimer.Interval = TimeSpan.FromMilliseconds(_dataContextViewModel.InkProcessingDelay);
ClearCanvas();
};
_inactiveTimer.Tick += (s, e) => { ShowWelcome(); };
_inkTimer.Tick += async (s, e) => {
_inkTimer.Stop();
var boundingBox = GetBoundingBox(_sessionStrokes);
try
{
var result = await _dataContextViewModel.ProcessInkAsync(_sessionStrokes);
if (result != null && result.Keys.Count > 0)
{
var top = (from r in result select r).First();
UpdateAIStats(result);
await PlaceIconAsync(top.Key, top.Value, boundingBox);
}
}
catch (Exception ex)
{
}
finally
{
UpdateInkStats(_sessionStrokes);
_sessionStrokes.Clear();
win2dCanvas.Invalidate();
}
};
inkCanvas.InkPresenter.StrokeInput.StrokeStarted += (s, e) =>
{
_inkTimer.Stop();
_inactiveTimer.Stop();
};
inkCanvas.InkPresenter.StrokesCollected += (s, e) => {
_inkTimer.Stop();
_inactiveTimer.Stop();
_pendingDry = _inkSync.BeginDry();
foreach (var stroke in _pendingDry)
_sessionStrokes.Add(stroke);
win2dCanvas.Invalidate();
_inkTimer.Start();
_inactiveTimer.Start();
};
_inkSync = inkCanvas.InkPresenter.ActivateCustomDrying();
this.Unloaded += (s, e) => {
win2dCanvas.RemoveFromVisualTree();
win2dCanvas = null;
};
}