WPF蒙板彈窗

需求與效果

由於界面設計需要,要給彈窗添加蒙板效果,在百度和google搜索了半天,竟然沒有一個滿意的方案,最後只能自己想辦法實現了一個,原理還是比較簡單的,現在分享給大家。

先看一下效果。。

        

實現方法

原理其實很簡單,啓動項目的時候,先在主窗體最根部的Grid 添加一個控件,設置好顏色和透明度,隱藏:

    <Grid>
        <Button Content="測試彈窗" Width="50" Height="20" Click="Button_Click"/>
        <StackPanel x:Name="spMasking" Opacity="0.4" Background="Black" Visibility="Collapsed" />
    </Grid>

 

在這裏我用的stack panel,具體什麼都沒影響。黑色背景0.4透明度剛好呈現蒙板效果。

需要蒙板彈窗的時候,調用方法

    public static void ShowDialog(Window owner, Window window)
    {
        StackPanel spMasking = ControlHelper.GetChildObject<StackPanel>(owner, "spMasking");
        spMasking.Visibility = Visibility.Visible;
        window.ShowDialog();
    }

 

需要關閉蒙板效果的時候,調用方法

    public virtual void ClearMask(object sender, EventArgs e)
    {
        var owner = Application.Current.MainWindow;
        StackPanel spMasking = ControlHelper.GetChildObject<StackPanel>(owner, "spMasking");
        spMasking.Visibility = Visibility.Collapsed;
    }

  

這樣即可實現一個蒙板彈窗

有同學可能要問,這樣的話,窗體最上面一行的標題,放大縮小按鈕,並沒有被擋住。這裏,我的做法是是隱藏掉了默認的樣式,自己應用Grid封裝了新的自定義樣式,然後應用Grid.ColumnSpan Grid.RowSpan跨列實現蒙板遮擋,如果有遇到問題的夥伴歡迎留言。

 

下載鏈接

        鏈接:https://pan.baidu.com/s/1eS2B5ZW

        密碼: 2kmf

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章