类别:.Net相关知识 / 日期:2014-02-09 / 浏览:1709 / 评论:0
1. 提出问题: 在进行Windows Store App开发的时候,我们通常会使用MVVM设计模式,其中最多的就是使用MVVM Light Toolkit。最近我们在开发的时候就出现了一个问题,在反复进入并退出某个界面的时候莫名其妙的抛出了一个异常,如下图。
出现这个问题以后,我们通过查看堆栈的调用信息,查询到了在set_SCase(CaseInfor value)方法中出现的问题,但是在这个方法中的代码并没有什么问题。经过一段时间的摸索,尝试过将绑定的对象改成String类型,也尝试过是不是对应的Style影响的,也尝试过每次进入页面重新注册ViewModel,甚至尝试过直接捕捉异常,但是都不能解决问题。 下面我们来看下前台View的代码。
在View中我们可以看到,两个TextBlock都对应绑定了SCase和SScene对象的Name属性,这两个也是这次出问题的地方。
2.前提知识 无
3. 解决方法
从上面的前台代码我们发现了两个TextBlock都设置了一个ToolTipService.ToolTip的属性,但是这不是问题,因为我们不可能不允许设置鼠标放上去的提示,但是问题就是出现在这个属性上,因为它跟Text一样都绑定了同一个属性(SCase和SScene),这是问题的关键也是异常产生的原因。
但是我们不能因为这个原因就不使用ToolTip去显示过长的内容,所有我们想出的方法就是在ViewModel中在添加类一个跟绑定Text属性的 SCase和SScene对象的相同内容且不同名字的属性,供ToolTipService.ToolTip去绑定使用,这样虽然不是很完美但是还是能解决这个问题,如果哪位朋友有更好的解决方法,我们可以一起交流。
发表评论 /