2016-04-03 9 views
0

我正在用c#WPF使用inkcanvas简单的绘图程序。 我正在使用XceedWpfToolkit。它运作良好。当inkcanvas颜色改变时,我得到空异常错误只有在事件colorpicker_SelectedColorChanged()

当我用colorpicker更改我的inkcanvas笔笔触颜色时,出现了一些问题。

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

 inkcanvas1.DefaultDrawingAttributes.Color = mypenbrush.Color; 

我检查了mypenbrush.Color不为空。它有价值。 但下面的代码会导致错误(“仅在事件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

拾色器设置我做了一个快速测试,什么我注意到的是,当我最初推出的项目中,ColorPicker_SelectedColorChanged事件被称为同时InkCanvas不是招” t尚未加载,因此仍然为空。这是造成错误的原因。

如果在分配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; 
} 
+0

我从来没有想过这个观点。我真的很感激你〜!你的回答扩大了我的视野。对于我的低声誉感到抱歉,我无法投票。谢谢〜 – randomwalk1225

相关问题