我正在使用带有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"/>
答案 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;
}