当我使用弹出窗口时,它似乎在闲逛。在下面的代码中,我通过覆盖控件模板将弹出窗口附加到textBox,并在TextBox具有焦点时弹出窗口。当您选择跳到下一个屏幕元素时,弹出窗口会消失,但如果您只是alt-tab到另一个应用程序,弹出窗口将保留在前台。我怎么摆脱它?
<Window x:Class="DropDownPicker.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid>
<StackPanel>
<TextBox Text="hello">
<TextBox.Style>
<!-- Simple TextBox -->
<Style
TargetType="{x:Type TextBox}">
<Setter
Property="KeyboardNavigation.TabNavigation"
Value="None" />
<Setter
Property="FocusVisualStyle"
Value="{x:Null}" />
<Setter
Property="AllowDrop"
Value="true" />
<Setter
Property="Template">
<Setter.Value>
<ControlTemplate
TargetType="{x:Type TextBox}">
<Grid>
<Border
x:Name="Border"
Background="{DynamicResource WindowBackgroundBrush}"
BorderBrush="{DynamicResource SolidBorderBrush}"
BorderThickness="1"
Padding="2"
CornerRadius="2">
<Grid>
<!-- The implementation places the Content into the ScrollViewer. It must be named PART_ContentHost for the control to function -->
<ScrollViewer
Margin="0"
x:Name="PART_ContentHost"
Style="{DynamicResource SimpleScrollViewer}"
Background="{TemplateBinding Background}" />
<Popup
x:Name="thePopup"
IsOpen="False">
<Border
BorderBrush="Red"
BorderThickness="5">
<TextBlock
Text="Hellssss" />
</Border>
</Popup>
</Grid>
</Border>
</Grid>
<ControlTemplate.Triggers>
<Trigger
Property="IsFocused"
Value="True">
<Setter
TargetName="thePopup"
Property="IsOpen"
Value="True" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</TextBox.Style>
</TextBox>
<TextBox
Text="ssss" />
</StackPanel>
</Grid>
</Window>
答案 0 :(得分:3)
您是否尝试将StaysOpen
属性设置为False
?
如果StaysOpen
为True
,这是默认值,它将保持打开状态,直到控件不再处于焦点位置。如果是False
,它将保持打开状态,直到鼠标或键盘事件发生在Popup
控件之外,这可能是alt-tabing时的情况。你可能需要稍微调整它以使其表现得像你想要的那样,但它可能是一个起点。
答案 1 :(得分:2)
我听了LostMouseCapture事件,然后将Popup上的StaysOpen属性设置为false
答案 2 :(得分:0)
这是设计的;窗口焦点!=控制焦点,否则当您从窗口中跳出并返回时,光标将跳回第一个控件。如果您希望在窗口未激活时隐藏弹出窗口,则必须手动执行此操作。
答案 3 :(得分:0)
这里也提出类似的问题: WPF Popup ZOrder
检查一下:
http://chriscavanagh.wordpress.com/2008/08/13/non-topmost-wpf-popup/
希望这能帮到你!!