alpha
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Ink;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace InkCanvasForClassX.Libraries
|
||||
{
|
||||
public partial class InkCanvas : UserControl
|
||||
{
|
||||
|
||||
public static readonly DependencyProperty InkStrokesProperty =
|
||||
DependencyProperty.Register(
|
||||
name: "InkStrokes",
|
||||
propertyType: typeof(StrokeCollection),
|
||||
ownerType: typeof(InkCanvas),
|
||||
typeMetadata: new FrameworkPropertyMetadata(
|
||||
defaultValue: new StrokeCollection(),
|
||||
propertyChangedCallback: new PropertyChangedCallback(OnInkStrokesChanged))
|
||||
);
|
||||
|
||||
public StrokeCollection InkStrokes {
|
||||
get => (StrokeCollection)GetValue(InkStrokesProperty);
|
||||
set {
|
||||
Trace.WriteLine("Set InkStrokes");
|
||||
SetValue(InkStrokesProperty, value);
|
||||
}
|
||||
}
|
||||
|
||||
private static void OnInkStrokesChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
|
||||
{
|
||||
Trace.WriteLine("Update");
|
||||
var control = (InkCanvas)d;
|
||||
if (e.OldValue is StrokeCollection oldStrokes) {
|
||||
oldStrokes.StrokesChanged -= control.OnStrokesChanged;
|
||||
}
|
||||
|
||||
if (e.NewValue is StrokeCollection newStrokes) {
|
||||
newStrokes.StrokesChanged += control.OnStrokesChanged;
|
||||
control.inkProjector.Strokes = newStrokes;
|
||||
}
|
||||
}
|
||||
private void OnStrokesChanged(object sender, StrokeCollectionChangedEventArgs e)
|
||||
{
|
||||
Trace.WriteLine("Strokes Collection Changed");
|
||||
// Ensure that the InkStrokes dependency property updates
|
||||
SetValue(InkStrokesProperty, sender as StrokeCollection);
|
||||
inkProjector.Strokes = sender as StrokeCollection;
|
||||
}
|
||||
|
||||
public InkCanvas()
|
||||
{
|
||||
InitializeComponent();
|
||||
InkStrokes.StrokesChanged += OnStrokesChanged;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user