当 inkcanvas 颜色改变时,我得到 Null exception error Only in event colorpicker_SelectedColorChanged()

When inkcanvas color change, I got Null exception error Only in event colorpicker_SelectedColorChanged()

我正在使用带有 c# WPF 的 inkcanvas 制作简单的绘图程序。 我正在使用 XceedWpfToolkit。效果很好。

当我用拾色器更改我的 inkcanvas 笔触颜色时,我遇到了一些问题。

空异常错误仅在事件 colorpicker_SelectedColorChanged() 中发生。在其他情况下,下面的代码工作正常。

        inkcanvas1.DefaultDrawingAttributes.Color = mypenbrush.Color;

我检查过 mypenbrush.Color 不是 Null。它具有价值。 但是下面的代码会出错("ONLY IN EVENT colorpicker_SelectedColorChanged()")。三个小时后,我试图找出原因。但直到现在我才知道。

private void colorpicker1_SelectedColorChanged(object sender, RoutedPropertyChangedEventArgs<Color?> e)
    {
        mypenbrush = new SolidColorBrush();
        mypenbrush.Color = (Color)colorpicker1.SelectedColor;
        inkcanvas1.DefaultDrawingAttributes.Color = mypenbrush.Color;
    }

这是 XAML

中的颜色选择器设置
<xctk:ColorPicker x:Name="colorpicker1" Width="60" ShowRecentColors="True" SelectedColor="Black" SelectedColorChanged="colorpicker1_SelectedColorChanged" ShowAvailableColors="False"/>

我做了一个快速测试,我注意到当我最初启动项目时,ColorPicker_SelectedColorChanged 事件在 InkCanvas 尚未加载时被调用,因此仍然为空。这就是导致错误的原因。

如果我在将 InkCanvas 分配给 PenBrush 之前检查它是否不为 null,它工作正常。

private void ColorPicker_SelectedColorChanged(object sender, RoutedPropertyChangedEventArgs<Color?> e)
{
    myPenBrush = new SolidColorBrush();
    myPenBrush.Color = (Color)colorpicker1.SelectedColor;

    if (myInkCanvas != null)
        myInkCanvas.DefaultDrawingAttributes.Color = myPenBrush.Color;
}