[英]WPF action on LostFocus textbox
我正在使用WPF应用程序,但有一个小问题。
我有1个ToggleButton和1个TextBox。 当我单击ToggleButton时,TextBox消失并获得焦点。 很好 但是现在我想要当我单击另一个文本框或其他地方时,该文本框失去他的注意力并消失了。 我尝试使用Differnet触发器和设置器进行此操作,但无法使其正常工作。
我的代码现在:
<ToggleButton x:Name="SearchButton" Width="100" Height="100" BorderThickness="0" Margin="580,0,0,0" Template="{DynamicResource ButtonBaseControlTemplate1}" Panel.ZIndex="1">
<ToggleButton.Style>
<Style TargetType="ToggleButton">
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding IsChecked, ElementName=SearchButton}" Value="True" />
<Condition Binding="{Binding Visibility, ElementName=SearchBox}" Value="Visible"/>
</MultiDataTrigger.Conditions>
<Setter Property="FocusManager.FocusedElement" Value="{Binding ElementName=SearchBox}" />
</MultiDataTrigger>
</Style.Triggers>
</Style>
</ToggleButton.Style>
</ToggleButton><TextBox x:Name="SearchBox" Margin="100,33,0,34" Visibility="{Binding IsChecked, ElementName=SearchButton, Converter={StaticResource BoolVisibilityConverter}}" Opacity="0" FontSize="24" FontFamily="Arial" Background="{x:Null}" Foreground="#FF7F7F7F" BorderThickness="0">
<TextBox.Style>
<Style TargetType="TextBox">
<Style.Triggers>
<Trigger Property="TextBox.IsFocused" Value="False">
<Setter Property="ToggleButton.IsChecked" Value="False" TargetName="SearchButton" />
</Trigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
实际上,WPF中的样式彼此分离,这只是一堆设置设置器。 我们可以说,两种不同的控件样式,以及两种不同的可视树。 因此,当您尝试设置TextBox
样式以访问ToggleButton
它将不起作用,因为它的可视树没有ToggleButtons
。
在WPF中,用于编辑可视树中的元素,尤其是控件,使用一个或多个模板控件放置在一种Style
视图中(但这通常是借助模板(例如DataTemplate
或ControlTemplate
)来完成的。
我认为它适合控制Expander
。 它已经具有ToggleButton
和内容。 例:
XAML
<Expander Header="SearchButton">
<TextBox Text="SearchBox: Opened" Background="Gainsboro" />
</Expander>
产量
要更改Expander
的视图,您需要更改其Style
。 使用它,您可以设置任何形式和控件视图。
有关更多信息,请参见:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.