弹出:使用TextBox IsKeyboardFocused = true datatrigger打开弹出窗口,并使用StaysOpen =" False"关闭弹出窗口,导致弹出窗口无法显示

时间:2016-04-16 00:40:09

标签: c# wpf textbox popup datatrigger

我试图在文本框获得键盘焦点时打开弹出窗口。当用户点击弹出窗口时,我希望弹出窗口关闭。

我可以收集的内容StaysOpen="False"会在用户点击它时关闭弹出窗口。问题是它不能与IsKeyboardFocused = true数据触发器一起工作,导致弹出窗口根本不显示。如果我删除StaysOpen属性,弹出窗口会显示,但会在点击时关闭(即使我没有指定已关闭事件的代码)。

Here is what it looks like without the StaysOpen property.

这是我的代码。非常感谢任何帮助!

    <TextBox x:Name="SearchTextBox" 
             Height="26" 
             Width="165"
             TextWrapping="Wrap" 
             Text="Example">
    </TextBox>
    <Popup
           Placement="Bottom"
           PlacementTarget="{Binding ElementName=SearchTextBox}"
           Height="200"
           Width="100"
           StaysOpen="False"> <!-- If StaysOpen property is removed, popup displays!!! -->
        <Popup.Style>
            <Style TargetType="{x:Type Popup}">
                <Setter Property="IsOpen" Value="False"/>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding ElementName=SearchTextBox, Path=IsKeyboardFocused}"
                                 Value="true">
                        <Setter Property="IsOpen" Value="True"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Popup.Style>
    </Popup>

0 个答案:

没有答案