diff --git a/Microsoft.Toolkit.Uwp.UI.Controls/InfiniteCanvas/InfiniteCanvas.TextBox.cs b/Microsoft.Toolkit.Uwp.UI.Controls/InfiniteCanvas/InfiniteCanvas.TextBox.cs
index c8559f9933e..94a537fbb53 100644
--- a/Microsoft.Toolkit.Uwp.UI.Controls/InfiniteCanvas/InfiniteCanvas.TextBox.cs
+++ b/Microsoft.Toolkit.Uwp.UI.Controls/InfiniteCanvas/InfiniteCanvas.TextBox.cs
@@ -116,7 +116,10 @@ private void CanvasTextBoxColorPicker_ColorChanged(ColorPicker sender, ColorChan
ReDrawCanvas();
}
- _fontColorIcon.Foreground = new SolidColorBrush(_canvasTextBoxColorPicker.Color);
+ if (_fontColorIcon != null)
+ {
+ _fontColorIcon.Foreground = new SolidColorBrush(_canvasTextBoxColorPicker.Color);
+ }
}
private void CanvasTextBox_TextChanged(object sender, string text)
diff --git a/Microsoft.Toolkit.Uwp.UI.Controls/InfiniteCanvas/InfiniteCanvas.cs b/Microsoft.Toolkit.Uwp.UI.Controls/InfiniteCanvas/InfiniteCanvas.cs
index 90134e7b601..c2c80be3b4f 100644
--- a/Microsoft.Toolkit.Uwp.UI.Controls/InfiniteCanvas/InfiniteCanvas.cs
+++ b/Microsoft.Toolkit.Uwp.UI.Controls/InfiniteCanvas/InfiniteCanvas.cs
@@ -19,12 +19,49 @@ namespace Microsoft.Toolkit.Uwp.UI.Controls
///
/// InfiniteCanvas is a canvas that supports Ink, Text, Format Text, Zoom in/out, Redo, Undo, Export canvas data, Import canvas data.
///
+ [TemplatePart(Name = CanvasTextBoxToolsName, Type = typeof(StackPanel))]
+ [TemplatePart(Name = CanvasTextBoxColorPickerName, Type = typeof(ColorPicker))]
+ [TemplatePart(Name = CanvasTextBoxFontSizeTextBoxName, Type = typeof(TextBox))]
+ [TemplatePart(Name = CanvasTextBoxItalicButtonName, Type = typeof(ToggleButton))]
+ [TemplatePart(Name = CanvasTextBoxBoldButtonName, Type = typeof(ToggleButton))]
+ [TemplatePart(Name = DrawingSurfaceRendererName, Type = typeof(InfiniteCanvasVirtualDrawingSurface))]
+ [TemplatePart(Name = MainContainerName, Type = typeof(Canvas))]
+ [TemplatePart(Name = InfiniteCanvasScrollViewerName, Type = typeof(ScrollViewer))]
+ [TemplatePart(Name = EraseAllButtonName, Type = typeof(Button))]
+ [TemplatePart(Name = CanvasTextBoxName, Type = typeof(InfiniteCanvasTextBox))]
+ [TemplatePart(Name = EnableTextButtonName, Type = typeof(InkToolbarCustomToolButton))]
+ [TemplatePart(Name = EnableTouchInkingButtonName, Type = typeof(InkToolbarCustomToggleButton))]
+ [TemplatePart(Name = InkCanvasToolBarName, Type = typeof(InkToolbar))]
+ [TemplatePart(Name = CanvasToolbarContainerName, Type = typeof(StackPanel))]
+ [TemplatePart(Name = DrawingInkCanvasName, Type = typeof(InkCanvas))]
+ [TemplatePart(Name = UndoButtonName, Type = typeof(Button))]
+ [TemplatePart(Name = RedoButtonName, Type = typeof(Button))]
+ [TemplatePart(Name = FontColorIconName, Type = typeof(FontIcon))]
public partial class InfiniteCanvas : Control
{
private const double DefaultMaxZoomFactor = 4.0;
private const double DefaultMinZoomFactor = .25;
private const double LargeCanvasWidthHeight = 1 << 21;
+ private const string CanvasTextBoxToolsName = "CanvasTextBoxTools";
+ private const string CanvasTextBoxColorPickerName = "CanvasTextBoxColorPicker";
+ private const string CanvasTextBoxFontSizeTextBoxName = "CanvasTextBoxFontSizeTextBox";
+ private const string CanvasTextBoxItalicButtonName = "CanvasTextBoxItalicButton";
+ private const string CanvasTextBoxBoldButtonName = "CanvasTextBoxBoldButton";
+ private const string DrawingSurfaceRendererName = "DrawingSurfaceRenderer";
+ private const string MainContainerName = "MainContainer";
+ private const string InfiniteCanvasScrollViewerName = "InfiniteCanvasScrollViewer";
+ private const string EraseAllButtonName = "EraseAllButton";
+ private const string CanvasTextBoxName = "CanvasTextBox";
+ private const string EnableTextButtonName = "EnableTextButton";
+ private const string EnableTouchInkingButtonName = "EnableTouchInkingButton";
+ private const string InkCanvasToolBarName = "InkCanvasToolBar";
+ private const string CanvasToolbarContainerName = "CanvasToolbarContainer";
+ private const string DrawingInkCanvasName = "DrawingInkCanvas";
+ private const string UndoButtonName = "UndoButton";
+ private const string RedoButtonName = "RedoButton";
+ private const string FontColorIconName = "FontColorIcon";
+
private InkCanvas _inkCanvas;
private InfiniteCanvasVirtualDrawingSurface _drawingSurfaceRenderer;
private InkSynchronizer _inkSync;
@@ -163,25 +200,25 @@ public InfiniteCanvas()
///
protected override void OnApplyTemplate()
{
- _canvasTextBoxTools = (StackPanel)GetTemplateChild("CanvasTextBoxTools");
- _canvasTextBoxColorPicker = (ColorPicker)GetTemplateChild("CanvasTextBoxColorPicker");
- _canvasTextBoxFontSizeTextBox = (TextBox)GetTemplateChild("CanvasTextBoxFontSizeTextBox");
- _canvasTextBoxItalicButton = (ToggleButton)GetTemplateChild("CanvasTextBoxItalicButton");
- _canvasTextBoxBoldButton = (ToggleButton)GetTemplateChild("CanvasTextBoxBoldButton");
- _drawingSurfaceRenderer = (InfiniteCanvasVirtualDrawingSurface)GetTemplateChild("DrawingSurfaceRenderer");
- _mainContainer = (Canvas)GetTemplateChild("MainContainer");
- _infiniteCanvasScrollViewer = (ScrollViewer)GetTemplateChild("InfiniteCanvasScrollViewer");
- _eraseAllButton = (Button)GetTemplateChild("EraseAllButton");
- _canvasTextBox = (InfiniteCanvasTextBox)GetTemplateChild("CanvasTextBox");
- _enableTextButton = (InkToolbarCustomToolButton)GetTemplateChild("EnableTextButton");
- _enableTouchInkingButton = (InkToolbarCustomToggleButton)GetTemplateChild("EnableTouchInkingButton");
- _inkCanvasToolBar = (InkToolbar)GetTemplateChild("InkCanvasToolBar");
- _canvasToolbarContainer = (StackPanel)GetTemplateChild("CanvasToolbarContainer");
-
- _inkCanvas = (InkCanvas)GetTemplateChild("DrawingInkCanvas");
- _undoButton = (Button)GetTemplateChild("UndoButton");
- _redoButton = (Button)GetTemplateChild("RedoButton");
- _fontColorIcon = (FontIcon)GetTemplateChild("FontColorIcon");
+ _canvasTextBoxTools = (StackPanel)GetTemplateChild(CanvasTextBoxToolsName);
+ _canvasTextBoxColorPicker = (ColorPicker)GetTemplateChild(CanvasTextBoxColorPickerName);
+ _canvasTextBoxFontSizeTextBox = (TextBox)GetTemplateChild(CanvasTextBoxFontSizeTextBoxName);
+ _canvasTextBoxItalicButton = (ToggleButton)GetTemplateChild(CanvasTextBoxItalicButtonName);
+ _canvasTextBoxBoldButton = (ToggleButton)GetTemplateChild(CanvasTextBoxBoldButtonName);
+ _drawingSurfaceRenderer = (InfiniteCanvasVirtualDrawingSurface)GetTemplateChild(DrawingSurfaceRendererName);
+ _mainContainer = (Canvas)GetTemplateChild(MainContainerName);
+ _infiniteCanvasScrollViewer = (ScrollViewer)GetTemplateChild(InfiniteCanvasScrollViewerName);
+ _eraseAllButton = (Button)GetTemplateChild(EraseAllButtonName);
+ _canvasTextBox = (InfiniteCanvasTextBox)GetTemplateChild(CanvasTextBoxName);
+ _enableTextButton = (InkToolbarCustomToolButton)GetTemplateChild(EnableTextButtonName);
+ _enableTouchInkingButton = (InkToolbarCustomToggleButton)GetTemplateChild(EnableTouchInkingButtonName);
+ _inkCanvasToolBar = (InkToolbar)GetTemplateChild(InkCanvasToolBarName);
+ _canvasToolbarContainer = (StackPanel)GetTemplateChild(CanvasToolbarContainerName);
+
+ _inkCanvas = (InkCanvas)GetTemplateChild(DrawingInkCanvasName);
+ _undoButton = (Button)GetTemplateChild(UndoButtonName);
+ _redoButton = (Button)GetTemplateChild(RedoButtonName);
+ _fontColorIcon = (FontIcon)GetTemplateChild(FontColorIconName);
UnRegisterEvents();
RegisterEvents();