silverlight - 如何防止 Silverlight View 中的闪烁?

标签 silverlight mvvm

我在我的 Silverlight UI 中遇到了一个相当普遍的情况,其中各种元素的可见性绑定(bind)到 ViewModel 上的某些属性。例如,我可能有这样的控件:

<myapp:WarningView Visibility="{Binding IsInWarningState}" />

如果警告状态为真,我们要显示控件,否则,我们不显示。问题是我遇到过很多情况,页面呈现并显示所有内容,包括 WarningView 控件,然后一秒钟后隐藏 View ,这看起来非常笨拙。

我认为正在发生的事情是 View 加载并对服务器进行异步调用以获取数据,但在此之前,没有 DataContext,因此 WarningView 无法绑定(bind),并使用默认值和默认值就是显示控件。

对于 View 来说,实例化它自己的 View 模型似乎是最干净的,或者至少这就是我现在正在做的。由于调用是异步的,因此当您想要显示某些内容但还没有要显示的真实数据时,总会有一些时间间隔。我可以想象制作一个具有更好默认值的模拟 ViewModel,但这似乎需要在整个项目范围内完成大量工作。

那么解决这个问题的最佳方法是什么?

最佳答案

好吧,在我放弃这个之后很久,我自己偶然发现了答案:在绑定(bind)中你可以指定一个 FallbackValue 和/或 TargetNullValue,它们指定一个值,当你绑定(bind)的东西不能时使用获得或为空。我的问题是 View 加载并创建了 ViewModel,并且在 View 可见和绑定(bind)完成之间的瞬间,控件可见,然后绑定(bind)折叠它们,这会导致闪烁。通过设置 Fallback 值,我可以确保控件折叠,然后仅在绑定(bind)时打开,然后它们保持打开状态。无闪烁。

关于silverlight - 如何防止 Silverlight View 中的闪烁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4808262/

相关文章:

c# - 将DataTrigger的 `Value`绑定(bind)到 `VModel`

silverlight - 如何绑定(bind)来自多个模型的 Bing 图钉?

silverlight - 递归silverlight Element finder扩展方法

c# - 在数据表中添加标签

WPF。使用 MVVM 了解 UserControl 中的错误验证

javascript - silverlight webbrowser 控件 InvokeScript 错误

ios - SwiftUI:从嵌套 View 调用方法

c# - 由于ModelVIew中的嵌入式资源,WPF Xaml Designer的内存不足

wpf - 如何编写一个方便的 MVVM-Keylistener

silverlight - 如何在 DataGrid 列标题上设置 DataContext