【WPF】使用Popup控件做浮窗/提示框


需求:當鼠標移入某個區域時,彈出一個浮窗,以便用戶進行下一步操作。

效果如下圖:
當鼠標移入左上角的【多選顯示】框內,出現下面的浮窗(懸浮在原UI之上)。當在浮窗外點擊鼠標左鍵時,隱藏該浮窗。
這里寫圖片描述

由於該浮窗的內容較多,最好單獨做成一個UserControl。
使用UserControl的方法參考這篇文章:

http://www.cnblogs.com/shuang121/archive/2013/01/09/2853591.html

前台布局:

<Border BorderBrush="Black" Width="60" Height="40" Margin="5" BorderThickness="1" Background="White" MouseEnter="border_MouseEnter">
    <Grid>
        <TextBlock Text="多項選擇" HorizontalAlignment="Center" VerticalAlignment="Center"/>
        <Popup Name="pop1" StaysOpen="False">
            <local:BrandSelectView x:Name="brandSelectView" HorizontalAlignment="Left"/>
        </Popup>
    </Grid>
</Border>

說明:這里用的是Border邊框控件,由於該控件只能有一個Content,所以為了同時包含Popup及其在邊框中顯示的文字TextBlock,采用了一個Grid來包裹。


后台對於Popup控件的操作只有鼠標移入事件:

private void border_MouseEnter(object sender, System.Windows.Input.MouseEventArgs e)
{
    pop1.IsOpen = false;
    pop1.IsOpen = true;
}

說明:為何要先IsOpen = false再IsOpen = false,下邊有解釋。

http://bbs.csdn.net/topics/390770640

摘錄一下大神的原話:

“在其他地方點擊之后,pop1並不是自動關閉了,而是跑到其他控件后面去了
所以你再讓它打開,它其實已經是打開的,而且已經在后面,所以看不到了.
你先讓它關閉,再打開,就又跑到前面來了.”

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM