求高手指教,WPF 一直引发异常,自己做了一个调色板的UserControl,但是撤消命令一直出现异常 如果你这个"上次颜色"本身就是自己用变量记住的,而不是调用控件的某个熟悉那么,你在使用时,应该给它赋值初始值,或者调用前先判断是否为null 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在调试中,我观察了一下,previousColor这个量是有值的,但是赋值给Color这个属性就是会出错。 既然你要记住一个color,为什么不定义一个color类型,而是定义一个colorbrush类型?也许是类型不匹配导致赋值是抛异常 实在弄不好类型转换就干脆记住color的argb字符串然后重新把argb转换回color再赋值 应该跟类型转换没什么关系,至于为什么用SolidColorBrush,只是因为这样能直接赋给Background属性而已 不知道问题解决了吗,从楼主贴出来的异常看,这是一个涉及WPF冻结的问题,关于WPF中冻结的相关知识点,楼主请自己查阅。SolidColorBrush是继承与Freezable的,所以在用其对其他赋值时候请通过freeze()方法改变下对象的状态为只读。代码修改处添加以下句子就可以了 private void UndoCommand_Executed(object sender, ExecutedRoutedEventArgs e) { // something if (previousColor.CanFreeze) { previousColor.Freeze(); } //新旧的赋值操作 }希望能帮助到楼主~ 求教如何获取局域网内指定ip电脑的系统时间?? .netC# MDI调用子窗口函数。 C# 发送消息 急求关于mdi问题!不能转到mdi窗口 c#有没有与javascript内的charCodeAt相同的方法 如何在代码里调用installutil.exe安装服务???急,在线等! .net 2003 安装在2Kserver 上,一旦启动.net win2k 就兰屏了 高分问题:按热键隐藏或显示窗口时,怎样获得输入焦点? 怎么将url中的+-等特殊字符转成%2B等 欢迎讨论,来者有分 关于BlockingCollection<Point>的问题 如何動態處理欄位? C#有字串巨集嗎?
也许是类型不匹配导致赋值是抛异常
就干脆记住color的argb字符串
然后重新把argb转换回color再赋值
SolidColorBrush是继承与Freezable的,所以在用其对其他赋值时候请通过freeze()方法改变下对象的状态为只读。
代码修改处添加以下句子就可以了 private void UndoCommand_Executed(object sender, ExecutedRoutedEventArgs e)
{
// something
if (previousColor.CanFreeze) {
previousColor.Freeze();
} //新旧的赋值操作
}
希望能帮助到楼主~