WPF 在编辑时设置默认可见性值

WPF set default Visibility value when editing

我将 Visibility 绑定到一个 bool 上,效果很好。但是,在编辑页面时,边框不可见。我必须删除可见性绑定,进行更改并重做可见性绑定。

我很确定我看到有一种设置 "editing default" 的方法,但我找不到 link 了(或者记得它叫什么)。有人可以解释如何将默认设置设置为可见,以便我可以在编辑时看到它,但不影响它在运行时的操作吗?

<Border Grid.Column="2" BorderBrush="HotPink" BorderThickness="2" MinHeight="100" MinWidth="100" 
                Visibility="{Binding ElementName=GenerateWorkOrders, Path=IsChecked, Converter={StaticResource booleanToVisibility}, UpdateSourceTrigger=PropertyChanged}">
            <Label Content="Not Visible While Editing"/>
        </Border>

问题是 GenerateWorkOrders CheckBoxIsChecked 默认值是 false

如果IsCheckedBinding,可以使用FallbackValue:

<CheckBox x:Name="GenerateWorkOrders" IsChecked="{Binding SomeProperty, FallbackValue=True}" />

另一种方法是避免绑定,您可以使用 DesignerProperties.IsInDesignMode 附加属性来指示您是否处于设计模式 (More inforamtion)。

您可以在行为中使用此 属性,或仅在 XAML 方法中使用:

    <Border Grid.Column="2" BorderBrush="HotPink" BorderThickness="2" MinHeight="100" MinWidth="100">
        <Border.Style>
            <Style TargetType="{x:Type Border}">
                <Setter Property="Visibility" Value="{Binding ElementName=GenerateWorkOrders, Path=IsChecked, Converter={StaticResource booleanToVisibilityConverter}, UpdateSourceTrigger=PropertyChanged}" />
                <Style.Triggers>
                    <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=(componentModel:DesignerProperties.IsInDesignMode)}" Value="true">
                        <Setter Property="Visibility" Value="Visible" />
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Border.Style>
        <Label Content="Not Visible While Editing"/>
    </Border>