当inkcanvas颜色改变时,我得到Null异常错误仅在事件colorpicker_SelectedColorChanged()中

时间:2016-04-03 13:52:05

标签: c# wpf nullreferenceexception inkcanvas xceed

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

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

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

        inkcanvas1.DefaultDrawingAttributes.Color = mypenbrush.Color;

我查了mypenbrush.Color不是Null。它有vaule。 但是下面的代码会产生错误(“仅在事件中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"/>

1 个答案:

答案 0 :(得分:1)

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

如果我在分配PenBrush之前检查InkCanvas是否为空,它可以正常工作。

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;
}