我在WPF中有一个只读的TextBox,我在TextBox MouseDown事件中打开了Popup(Popup.IsOpen设置为true,弹出设置的StaysOpen设置为false)。现在我可以通过鼠标在TextBox中打开弹出窗口。现在,如果我单击窗口中的任何其他位置(不是TextBox,Popup),则弹出窗口不会关闭。是弹出窗口的行为吗?
答案 0 :(得分:1)
是。这是弹出窗口的预期行为。 除非你调用函数window.close(),否则弹出窗口不会被关闭。
如果您使用的是MessageBox,则可以在单击按钮时调用close函数。
如果您正在使用窗口,则可以在用户的任何操作触发器上调用window.close(),例如单击按钮,或者在几秒钟左右后自动超时。希望这能清除你的怀疑。
答案 1 :(得分:1)
不,如果您将Popup
设置为StaysOpen
,则这不是false
控件的正常行为。正常行为在文档中描述为:
Popup.StaysOpen Property
获取或设置一个值,该值指示当控件不再处于焦点时是否关闭Popup控件。
话虽如此,如果您没有向我们展示任何代码,我们很难告诉您程序中究竟发生了什么,以便我们可以重现所述行为。例如,这是一个示例应用程序,它在启动时会打开Popup
控件,只要您点击其他任何位置,Popup
就会消失:
<Window x:Class="SampleApp.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"
xmlns:local="clr-namespace:SampleApp"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Popup IsOpen="True" StaysOpen="False" Placement="Center"
PlacementTarget="{Binding RelativeSource={RelativeSource AncestorType=Window}}">
<Grid Background="RoyalBlue">
<TextBlock Text="Popup Text" HorizontalAlignment="Center"
Foreground="White"
VerticalAlignment="Center" Margin="10"/>
</Grid>
</Popup>
</Grid>
</Window>