需求:當鼠標移入某個區域時,彈出一個浮窗,以便用戶進行下一步操作。
效果如下圖:
當鼠標移入左上角的【多選顯示】框內,出現下面的浮窗(懸浮在原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,下邊有解釋。
摘錄一下大神的原話:
“在其他地方點擊之后,pop1並不是自動關閉了,而是跑到其他控件后面去了
所以你再讓它打開,它其實已經是打開的,而且已經在后面,所以看不到了.
你先讓它關閉,再打開,就又跑到前面來了.”
