先看看效果圖
思路
拿到父級窗體的內容,放入一個容器里,再在容器里放入一個半透明層.將整個容器賦給父級窗體的內容.
關閉時反向操作.
代碼
消息窗彈出時
/// <summary>/// 彈出消息框/// </summary>/// <param name="message">消息</param>/// <param name="owner">父級窗體</param>public static void ShowDialog(string message, Window owner){ //蒙板 Grid layer = new Grid() { Background = new SolidColorBrush(Color.FromArgb(128, 0, 0, 0)) }; //父級窗體原來的內容 UIElement original = owner.Content as UIElement; owner.Content = null; //容器Grid Grid container = new Grid(); container.Children.Add(original);//放入原來的內容 container.Children.Add(layer);//在上面放一層蒙板 //將裝有原來內容和蒙板的容器賦給父級窗體 owner.Content = container; //彈出消息框 MessageBox box = new MessageBox() { Owner = owner }; box.tbc_message.Text = message; box.ShowDialog();}
消息框關閉時
/// <summary>/// 窗體關閉事件/// </summary>private void Window_Closed(object sender, EventArgs e){ //容器Grid Grid grid = this.Owner.Content as Grid; //父級窗體原來的內容 UIElement original = VisualTreeHelper.GetChild(grid, 0) as UIElement; //將父級窗體原來的內容在容器Grid中移除 grid.Children.Remove(original); //賦給父級窗體 this.Owner.Content = original;}
源碼下載:http://xiazai.VeVB.COm/201612/yuanma/MessageBox(VeVB.COm).rar
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。
新聞熱點
疑難解答