我的 ViewModel 中有一个布尔属性,命名为让我们说IsNotSupported
如果不支持传感器则用于显示一些警告信息。因此,我使用BooleanToVisibilityConverter
添加到资源中的 ,:
<phone:PhoneApplicationPage.Resources>
<local:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
</phone:PhoneApplicationPage.Resources>
并将其绑定到包含警告的堆栈面板:
<StackPanel x:Name="NotSupportedWarning" Visibility="{Binding IsNotSupported,
Converter={StaticResource BooleanToVisibilityConverter}}">
这一切都很好,但是在加载页面并且支持传感器时,警告仅出现几分之一秒然后消失。我知道这种闪烁是由尚未发生的绑定引起的,因此默认为可见。
那闪烁真是烦人......它应该默认为折叠并且只有在清楚应该显示警告后才可见。此外,这将避免绑定后的第二次布局传递,因此可能会对性能产生积极影响。
我一遍又一遍地遇到这个问题,直到我发现这个密切相关的 SO 问题之前,在互联网上一无所获,但如果搜索 windows phone 而不是 silverlight,则找不到。问题和解决方案都可能看起来很简单,但我确实困扰了我很长时间,所以我认为写一个问答式的问题来帮助面临同样问题的其他人可能是个好主意。