【发布时间】:2014-11-27 16:21:38
【问题描述】:
我有一个文本框,我试图遵守以下规则:
文本框在获得焦点时必须始终可见
文本框在没有焦点且为空时必须始终隐藏
我有一个依赖属性设置,它允许我重新调整文本框的焦点,以便它显示。这“单向”工作,因为我可以集中一个折叠的文本框并显示。但是一旦我将焦点移出文本框(并且它是空的),它就会一直存在。
如何折叠文本框,一旦失去焦点并且它是空的? (注:我也想SHOW这个框,如果输入了文本(它绑定到其他文本框,可能已经输入了文本,这是双向绑定的)。
<Style x:Key="textBoxHider" TargetType="{x:Type TextBox}" BasedOn="{StaticResource storyForgeTextBox}">
<Style.Triggers>
<Trigger Property ="IsMouseOver" Value="True">
<Setter Property= "BorderBrush" Value="LightCyan"/>
<Setter Property= "BorderThickness" Value="2"/>
</Trigger>
<Trigger Property="IsFocused" Value="True">
<Setter Property= "BorderBrush" Value="LightSkyBlue"/>
<Setter Property= "BorderThickness" Value="2"/>
</Trigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="Text" Value=""></Condition>
<Condition Property="IsFocused" Value="False"></Condition>
</MultiTrigger.Conditions>
<MultiTrigger.Setters>
<Setter Property="Visibility" Value="Collapsed"></Setter>
</MultiTrigger.Setters>
</MultiTrigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsFocused" Value="True"></Condition>
</MultiTrigger.Conditions>
<MultiTrigger.Setters>
<Setter Property="Visibility" Value="Visible"></Setter>
</MultiTrigger.Setters>
</MultiTrigger>
</Style.Triggers>
</Style>
编辑:为了清楚起见,我进一步简化了它,它仍然没有崩溃。检查 Snoop 中的值。当我没有专注/专注时,IsFocused 被正确设置为 FALSE 和 TRUE。
<Style x:Key="TextBoxHider" TargetType="{x:Type TextBox}" BasedOn="{StaticResource storyForgeTextBox}">
<Style.Triggers>
<Trigger Property ="IsMouseOver" Value="True">
<Setter Property= "BorderBrush" Value="LightCyan"/>
<Setter Property= "BorderThickness" Value="2"/>
</Trigger>
<Trigger Property="IsFocused" Value="True">
<Setter Property= "BorderBrush" Value="LightSkyBlue"/>
<Setter Property= "BorderThickness" Value="2"/>
<Setter Property="Visibility" Value="Visible"></Setter>
</Trigger>
<Trigger Property="IsFocused" Value="False">
<Setter Property="Visibility" Value="Collapsed"></Setter>
</Trigger>
</Style.Triggers>
</Style>
edit:edit: 我现在很难过。边框刷设置为红色没问题。所以 IsFocused 被解雇了,但它没有折叠盒子?
<Style x:Key="storyForgeTextBoxHider" TargetType="{x:Type TextBox}" BasedOn="{StaticResource storyForgeTextBox}">
<Style.Triggers>
<Trigger Property ="IsMouseOver" Value="True">
<Setter Property= "BorderBrush" Value="LightCyan"/>
<Setter Property= "BorderThickness" Value="2"/>
</Trigger>
<Trigger Property="IsFocused" Value="True">
<Setter Property= "BorderBrush" Value="LightSkyBlue"/>
<Setter Property= "BorderThickness" Value="2"/>
<Setter Property="Visibility" Value="Visible"></Setter>
</Trigger>
<Trigger Property="IsFocused" Value="False">
<Setter Property="Visibility" Value="Collapsed"></Setter>
<Setter Property="BorderBrush" Value="Red"></Setter>
</Trigger>
</Style.Triggers>
</Style>
【问题讨论】:
-
尝试使用“不透明度”属性
-
@Kumar - 这将使它不可见。未折叠。
-
我已经编辑了我的答案,请查看。