Wpf 如何以编程方式将UserControl设置为最顶层?

Wpf 如何以编程方式将UserControl设置为最顶层?,wpf,Wpf,如何以编程方式将UserControl设置为pc屏幕的最上方。我的wpf应用程序中有多个usercontrol,当我调整任何usercontrol的大小时,我想在屏幕顶部显示此usercontrol。这取决于您在哪个容器中使用它。或者在什么情况下。基本上,在网格中,您只需要将其指定为网格容器下的最后一个元素。否则,在XAML中的UserControl声明上使用Panel.ZIndex=1 我想在屏幕顶部显示这个用户控件 如果您指的是应用程序内屏幕的顶部,那么这是通过使用附加属性实现的 Xaml:

如何以编程方式将UserControl设置为pc屏幕的最上方。我的wpf应用程序中有多个usercontrol,当我调整任何usercontrol的大小时,我想在屏幕顶部显示此usercontrol。

这取决于您在哪个容器中使用它。或者在什么情况下。基本上,在网格中,您只需要将其指定为网格容器下的最后一个元素。否则,在XAML中的UserControl声明上使用Panel.ZIndex=1

我想在屏幕顶部显示这个用户控件

如果您指的是应用程序内屏幕的顶部,那么这是通过使用附加属性实现的

Xaml:

代码隐藏:

public partial class MainWindow : Window
        {
            public TopMostWindow TopMostWindow;
            public MainWindow()
            {
                InitializeComponent();
                TopMostWindow = new TopMostWindow();
                TopMostWindow.Show();

            }

            private void FirstUserControl_OnSizeChanged(object sender, SizeChangedEventArgs e)
            {
                TopMostWindow.Topmost = true;
            }

            private void MainWindow_OnContentRendered(object sender, EventArgs e)
            {
                FirstUserControl.SizeChanged += FirstUserControl_OnSizeChanged;
                SecondUserControl.SizeChanged += FirstUserControl_OnSizeChanged;
            }


            //This is to simulate the resizing 

            private void FirstUserControl_OnMouseDown(object sender, MouseButtonEventArgs e)
            {
                FirstUserControl.Width = 400;
            }
        }
TopMostWindow:


看,您想将UserControl设置为最顶层还是包含UserControl的窗口??
public MainWindow()
        {
            InitializeComponent();
            Panel.SetZIndex(TopMostUserControl, 1);
            Panel.SetZIndex(SecondUserControl, 0);
        }


<Grid x:Name="LayoutRoot">
            <UserControl x:Name="TopMostUserControl"
                         Margin="10,140,106,48"
                         Background="Green" />

            <UserControl x:Name="SecondUserControl"
                         Margin="39,50,37,87"
                         Background="red" />
        </Grid>
<Grid x:Name="LayoutRoot">
        <UserControl x:Name="FirstUserControl"
                     Margin="10,140,106,48"
                     Background="Green"
                     MouseDown="FirstUserControl_OnMouseDown" />

        <UserControl x:Name="SecondUserControl"
                     Margin="39,50,37,87"
                     Background="red" />
    </Grid>
public partial class MainWindow : Window
        {
            public TopMostWindow TopMostWindow;
            public MainWindow()
            {
                InitializeComponent();
                TopMostWindow = new TopMostWindow();
                TopMostWindow.Show();

            }

            private void FirstUserControl_OnSizeChanged(object sender, SizeChangedEventArgs e)
            {
                TopMostWindow.Topmost = true;
            }

            private void MainWindow_OnContentRendered(object sender, EventArgs e)
            {
                FirstUserControl.SizeChanged += FirstUserControl_OnSizeChanged;
                SecondUserControl.SizeChanged += FirstUserControl_OnSizeChanged;
            }


            //This is to simulate the resizing 

            private void FirstUserControl_OnMouseDown(object sender, MouseButtonEventArgs e)
            {
                FirstUserControl.Width = 400;
            }
        }
<Window x:Class="MvvmLight1.TopMostWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="TopMostWindow"
        Width="300"
        Height="300"
        Topmost="False"
        WindowStyle="None">
    <Grid>
        <UserControl x:Name="TopMostUserControl" Background="Blue" />
    </Grid>
</Window>