如果你这个"上次颜色"本身就是自己用变量记住的,而不是调用控件的某个熟悉
那么,你在使用时,应该给它赋值初始值,或者调用前先判断是否为null

解决方案 »

  1.   

    在调试中,我观察了一下,previousColor这个量是有值的,但是赋值给Color这个属性就是会出错。
      

  2.   

    既然你要记住一个color,为什么不定义一个color类型,而是定义一个colorbrush类型?
    也许是类型不匹配导致赋值是抛异常
      

  3.   

    实在弄不好类型转换
    就干脆记住color的argb字符串
    然后重新把argb转换回color再赋值
      

  4.   

    应该跟类型转换没什么关系,至于为什么用SolidColorBrush,只是因为这样能直接赋给Background属性而已
      

  5.   

    不知道问题解决了吗,从楼主贴出来的异常看,这是一个涉及WPF冻结的问题,关于WPF中冻结的相关知识点,楼主请自己查阅。
    SolidColorBrush是继承与Freezable的,所以在用其对其他赋值时候请通过freeze()方法改变下对象的状态为只读。
    代码修改处添加以下句子就可以了 private void UndoCommand_Executed(object sender, ExecutedRoutedEventArgs e)
            {
                // something 
                if (previousColor.CanFreeze) {
                    previousColor.Freeze();
                }            //新旧的赋值操作
            }
    希望能帮助到楼主~