红着眼 2023-11-23 14:26 采纳率: 27.8%
浏览 6
已结题

WPF蒙版消息导致系统点击不了的问题。

WPF蒙版消息提示的问题。我用方法1呢系统就点不了,只读了一样。用方法2呢,加入的蒙版又显示在顶部导航中,谢谢大家的赐教。
首页代码

<Grid x:Name="mainGrid">
    <Grid.RowDefinitions>
        <RowDefinition Height="70"/>
        <RowDefinition Height="*"/>
        <RowDefinition Height="75"/>
    </Grid.RowDefinitions>
    <Grid Grid.Row="0">
        <!--顶部导航-->
    </Grid>
    <Grid Grid.Row="1">
        <!--内容展示区域-->
        <Button Content="打开弹窗"  Click="Button_Click"/>
    </Grid>
    <Grid Grid.Row="2">
        <!--这里是首页的底部导航按钮位置-->
    </Grid>
</Grid>

以下的2个方法都存在问题,希望得到解决。谢谢了。

//方法一,参考的是:https://www.cnblogs.com/zunzunQ/p/15162982.html
//原理是将首页的内容给清除掉,任何再加入到一个新的拥有蒙版的Grid中,将Grid赋值给首页的内容。
//但是遇到的问题是,整个系统都只读了一样,没办法操作。按道理弹窗HZMessageBoxmessageBox不受影响,可是整个系统都操作不了。
HZMessageBoxmessageBox messageBox = new HZMessageBoxmessageBox(owner);
messageBox win = null;
var layer = new Grid() { Background = new SolidColorBrush(Color.FromArgb(128, 0, 0, 0)) };
UIElement original = win.Content as UIElement;
win.Content = null;
var container = new Grid();
container.Children.Add(original);
container.Children.Add(layer);
win.Content = container;
messageBox.Owner = win;
messageBox.ShowDialog();

//方法二
//这种方法是直接在首页中加入一个新的蒙版的Grid,可是我的首页中的Grid是规定好了的。
//加入的蒙版都是显示在<!--顶部导航-->的位置了。请问有什么怎么可以让新的蒙版的Grid不显示在mainGrid中,或者是不受mainGrid中的分行影响呢。 
Grid maskGrid = new Grid();
maskGrid.Width = 1000;
maskGrid.Height = 600;
maskGrid.Background = new SolidColorBrush(Color.FromArgb(0x80, 0xFD, 0x00, 0x00));
// 将半透明的Grid放置在父级窗体的Grid容器中
Grid parentGrid = Application.Current.MainWindow.Content as Grid;
//这里获取的是mainGrid
var aaa = parentGrid.Name;
parentGrid.Children.Add(maskGrid);

  • 写回答

5条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2023-11-23 14:26
    关注

    引自强大而免费的微信小程序:皆我百晓生

    方法一中的问题可能是在将原始内容放入新的Grid中后,没有将新的Grid作为主窗口的Content,导致整个系统都无法操作。你可以尝试将以下代码添加到方法一的最后:

    Application.Current.MainWindow.Content = win;
    

    这样将新的Grid赋值给主窗口的Content,可能可以解决系统无法操作的问题。

    方法二中的问题可能是因为你将新的蒙版Grid添加到了顶部导航Grid的位置。你可以尝试将新的蒙版Grid添加到主Grid的最顶部,这样它就不会受到mainGrid中的分行影响。可以尝试使用以下代码替换方法二中的最后一行:

    mainGrid.Children.Insert(0, maskGrid);
    

    这样将蒙版Grid插入到mainGrid的最顶部,而不受分行的影响。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月24日
  • 创建了问题 11月23日

悬赏问题

  • ¥15 代码在keil5里变成了这样怎么办啊,文件图像也变了,
  • ¥20 Ue4.26打包win64bit报错,如何解决?(语言-c++)
  • ¥15 clousx6整点报时指令怎么写
  • ¥30 远程帮我安装软件及库文件
  • ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
  • ¥20 深信服vpn-2050这台设备如何配置才能成功联网?
  • ¥15 Arduino的wifi连接,如何关闭低功耗模式?
  • ¥15 Android studio 无法定位adb是什么问题?
  • ¥15 C#连接不上服务器,
  • ¥15 angular项目错误