WPF 在编辑时设置默认可见性值
Posted
技术标签:
【中文标题】WPF 在编辑时设置默认可见性值【英文标题】:WPF set default Visibility value when editing 【发布时间】:2019-10-26 22:27:39 【问题描述】:我将 Visibility 绑定到一个布尔值,它工作得很好。但是,在编辑页面时,边框不可见。我必须删除可见性绑定,进行更改并重做可见性绑定。
我很确定我看到有一种方法可以设置“编辑默认值”,但我再也找不到那个链接了(或者记得它叫什么)。谁能解释一下如何将默认设置为可见,以便我可以在编辑时看到它,但不影响它在运行时的操作?
<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>
【问题讨论】:
“编辑页面”是指在 Visual Studio 中使用 Designer 时吗?你可能想检查这个answer Generateworkorders 默认情况下可能未选中。您可以将其设置为选中,或者将其 ischecked 的 fallbackvalue 值设置为 true。 是 VS 中的设计器模式,我相信 FallbackValue 是我一直在寻找的,但这似乎没有任何作用:Visibility="Binding ElementName=GenerateWorkOrders, Path=IsChecked, Converter= StaticResource booleanToVisibility,UpdateSourceTrigger=PropertyChanged,FallbackValue=Visible" 。我做错了吗? 你试过TargetNullValue
吗?
我不熟悉,但看起来很有趣。能介绍一下怎么用吗?
【参考方案1】:
问题是GenerateWorkOrdersCheckBox
的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>
【讨论】:
谢谢!我把 FallbackValue 放在了错误的控件上......我没有把它放在复选框上(就像你展示的那样),我试图把一个 FallbackValue 放在边框的 Visibility 属性中。以上是关于WPF 在编辑时设置默认可见性值的主要内容,如果未能解决你的问题,请参考以下文章