绑定元素对ViewModel属性的可见性,具有设计时支持

Reb*_*ott 4 wpf caliburn.micro fody-propertychanged

我有一个使用Caliburn.Micro的WPF应用程序.当我希望应用程序等待在后台完成某些工作时,我希望能够使用阴影和进度环(来自MahApps.Metro)覆盖应用程序.

我现在所拥有的实际上是有效的,但叠加层在设计时始终处于开启状态.我的ShellView窗口看起来像这样:

<Window ...>
    ...
    <Grid>
        ...
        <Rectangle x:Name="waitShadow" Fill="#3f000000" Stroke="Black" StrokeThickness="0" Visibility="{Binding IsWaiting, Converter={StaticResource BooleanToVisibilityConverter}}" Grid.RowSpan="2"/>
        <ContentControl ... Visibility="{Binding IsWaiting, Converter={StaticResource BooleanToVisibilityConverter}}">
            <Controls:ProgressRing ...> <!-- from MahApps.Metro -->
            </Controls:ProgressRing>
        </ContentControl>
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

我的ShellViewModel班级有一个公共bool属性IsWaiting,当我把它设置为true阴影和响铃出现,一切都被禁用.当我将它设置为false它去恢复正常,所以绑定工作(我使用Fody用的PropertyChanged插件).唯一的问题是该Visibility属性在设计时没有崩溃.

有没有更好的方法让叠加层在设计时有效?

sa_*_*213 8

你可以设置FallbackValue你的绑定,Collapse它将在设计时间

Visibility="{Binding IsWaiting, Converter={StaticResource BooleanToVisibilityConverter}, FallbackValue=Collapsed}"
Run Code Online (Sandbox Code Playgroud)

您也可以使IsWaiting一个DependancyProperty并设置默认的,但我觉得这个最简单的解决方案.