首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows控件之上的WPF控件

Windows控件之上的WPF控件
EN

Stack Overflow用户
提问于 2014-11-18 08:19:25
回答 1查看 1.2K关注 0票数 0

我有一个主窗

代码语言:javascript
复制
<Window >
     <Canvas x:Name="topCanvas" Background="Black">
        <Grid x:Name="mainGrid" Width="{Binding ElementName=topCanvas, Path=ActualWidth}" Height="{Binding ElementName=topCanvas, Path=ActualHeight}">
  </Grid>
        <Canvas 
            Width="{Binding ElementName=topCanvas, Path=ActualWidth}"
            Height="{Binding ElementName=topCanvas, Path=ActualHeight}" 
            Name="MessageField" PreviewMouseMove="MessageField_PreviewMouseMove_1"    
            >                
        </Canvas>
    </Canvas>
</Window>

mainGrid用于承载其他控件。基本上,它有一个选项卡控件,用于托管窗口,以及选项卡项中的wpf控件。现在,我想要一个弹出控件,当出现时,应该在所有控件之上,wpf以及windows控件。

现在我有了一个用户控件,我可以使用它作为弹出,但问题是,该控件没有出现在with控件的顶部。它位于wpf控件之上。

代码语言:javascript
复制
 MoveableMessageBox userControl = new MoveableMessageBox();
            System.Windows.Controls.Canvas.SetZIndex(userControl, (int)1);
            MessageField.Children.Add(userControl);

请建议如何使此控件在窗口控件的顶部以及。

EN

回答 1

Stack Overflow用户

发布于 2014-11-18 09:56:15

听起来你只是想要一个自定义对话框窗口。幸运的是,在WPF中创建这些工具非常简单。只需像这样扩展Window类:

代码语言:javascript
复制
<Window x:Class="WpfApplication2.Views.PopupWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="PopupWindow" Height="300" Width="300" Background="LightGreen" 
            WindowStyle="None" ResizeMode="NoResize">
    <Grid>
        <TextBlock Text="Message" HorizontalAlignment="Center" 
            VerticalAlignment="Center" />
    </Grid>
</Window>

public partial class PopupWindow : Window
{
    public PopupWindow()
    {
        InitializeComponent();
        PreviewMouseMove += new MouseEventHandler(PopupWindow_PreviewMouseMove);
    }

    private void PopupWindow_PreviewMouseMove(object sender, MouseEventArgs e)
    {
        if (Mouse.LeftButton == MouseButtonState.Pressed) DragMove();
    }
}

DragMove方法允许用户移动无边界的Window,它将显示在所有其他Window的顶部。

代码语言:javascript
复制
PopupWindow popup = new PopupWindow();
popup.ShowDialog();

当然,这是一个简单的,不完整的例子,我将把它留给你们去完成。例如,在这个Button上没有关闭的Window,所以您必须添加它(在此之前使用ALT+F4关闭它)。当DialogResult关闭时,您还需要返回Window值,但是您可以从MSDN上的对话框概述页面中找到仍然需要做的所有工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26989585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档