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 CheckBox
的 IsChecked
默认值是 false
如果IsChecked
有Binding
,可以使用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>
我将 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 CheckBox
的 IsChecked
默认值是 false
如果IsChecked
有Binding
,可以使用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>