2011-03-07 33 views
0

基本上我有一个标准的WPF UI,它有列表框,复选框,列表视图等,但当我更改它们时,需要一段时间才能显示更改。例如,假设我刷新了绑定,UI显示不会立即更新。大约需要花一秒钟左右的时间才能显示复选框被选中或未选中。如何关闭WPF中UI更改的逐步更新?

这是可以关闭的设置吗?

还是这是因为Windows 7 Aero的东西?我使用Visual Studio 2010,但它似乎没有像那样的行为,即使这也是WPF。

任何想法?

+0

老实说,它应该立即更新。屏幕挂在更新之间(是否占用CPU周期)?当你更新其中一个值时,你是否适当地调用了你的“RaisePropertyChanged()”函数? – JoeCool 2011-03-07 22:29:26

+0

这不是说应用程序似乎挂起,但用户界面的变化看起来像是一个图像缓慢的视觉转换到另一个。 – 2011-03-07 22:40:47

+0

什么操作系统和主题?而当你说一秒钟左右,你的意思是字面上的第二?一秒钟,我可以理解,但不是第二。 – 2011-03-07 23:10:41

回答

1

这听起来好像你只是不满意你的系统主题的过渡。您可以使用force a different system theme或使用您自己的设置覆盖默认样式。

+0

谢谢,这可能是它。这只是过渡效果本身不是非常直接的。否则,该应用程序是响应。 – 2011-03-08 18:06:13

1

你说刷新绑定。你是否使用INotifyPropertyChanged绑定到Properties?这个工作最快,因为只有已更改的项目才会更新。

+0

是的,但是当我需要刷新整个UI时,因为UI绑定的集合必须更改,所以我更新了所有集合。但无论是哪种方式,无论是单个检查/取消选中还是整个更新,时间都是一样的。就像我说的那样,它看起来像一个平稳的过渡,而不是一个应用程序挂断。 – 2011-03-07 23:54:27

+0

您也可以使用INotifyCollectionChanged。这将让UI知道个人价值何时改变而不是回忆整个收藏。这是在使用ObservableCollections时内置的。 – Eric 2011-03-08 01:54:13

+0

谢谢我这样做,但用户界面中的所有值都是由我从文件中读取和解释的值驱动的,当用户选择一个新文件时,则必须“重新加载”所有内容。 – 2011-03-08 18:05:21