我有一个主窗
<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控件之上。
MoveableMessageBox userControl = new MoveableMessageBox();
System.Windows.Controls.Canvas.SetZIndex(userControl, (int)1);
MessageField.Children.Add(userControl);请建议如何使此控件在窗口控件的顶部以及。


发布于 2014-11-18 09:56:15
听起来你只是想要一个自定义对话框窗口。幸运的是,在WPF中创建这些工具非常简单。只需像这样扩展Window类:
<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的顶部。
PopupWindow popup = new PopupWindow();
popup.ShowDialog();当然,这是一个简单的,不完整的例子,我将把它留给你们去完成。例如,在这个Button上没有关闭的Window,所以您必须添加它(在此之前使用ALT+F4关闭它)。当DialogResult关闭时,您还需要返回Window值,但是您可以从MSDN上的对话框概述页面中找到仍然需要做的所有工作。
https://stackoverflow.com/questions/26989585
复制相似问题