我有一个带有文本框的应用程序。每当用户单击文本框时,都会出现一个弹出窗口,其中提供了其他选项。我设法使用下面的XAML代码来做到这一点。但是,当我单击复选框时,弹出窗口会自动关闭。如何预防?
我还尝试将Pupup的IsOpen属性绑定到我的视图模型,并使用TextBox的LeftClick MouseAction将其设置为true,但是TextBox失去了焦点,实际输入变得非常随意。
当前的XAML代码:
<Window x:Class="WpfPopupTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<TextBox x:Name="Input" HorizontalAlignment="Center" VerticalAlignment="Center" Width="200" />
<Popup PlacementTarget="{Binding ElementName=Input}" Placement="Top">
<Popup.Style>
<Style TargetType="{x:Type Popup}">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=Input, Path=IsFocused}" Value="True">
<Setter Property="IsOpen" Value="True" />
</DataTrigger>
</Style.Triggers>
</Style>
</Popup.Style>
<StackPanel Orientation="Horizontal">
<CheckBox/>
<TextBlock Grid.Column="1">Option</TextBlock>
</StackPanel>
</Popup>
</Grid>
</Window>
答案 0 :(得分:-1)
正如Digitalsa1nt所建议的,问题是当您单击CheckBox时,文本框失去焦点,并且触发器停止使弹出窗口保持打开状态。
但是,如果CheckBox从未集中注意力,这不是问题。
<CheckBox Focusable="False"/>