c#WPF - SetZIndex UserControl问题

时间:2018-05-26 15:28:06

标签: c# wpf z-index

问题:当我调用System.ArgumentNullException: 'Value cannot be null.'函数时,我收到异常Canvas.SetZIndex()

我正在努力实现的目标:我的WPF应用程序中有2个UserControl堆叠在一起。单击一次按钮后,我想将一个按钮放在前面,然后使用SetZIndex()将旧的UserControl带回来。

我的代码MainWindow.xaml.cs

public partial class MainWindow : Window
{
    // Innitiate the variable
    public UserControl currentUserControl;

    public MainWindow()
    {
        InitializeComponent();

        // My 2 UserControls that are defined in MainWindow.xaml
        // <local:UserControl1 x:Name="homeControl" Margin="160,41,0,0" Panel.ZIndex="99"/>
        // <local:ProfileUserControl x:Name="profileControl" Margin="160,41,0,0"/>

        // Define current UserControl that is in front
        UserControl currentUserControl = homeControl; // <-- DEFINED VARIABLE
    }






    // Custom function to bring a UserControl in front
    public void BringToFront(UserControl switchTo)
    {
        // bring new UserControl to front
        Canvas.SetZIndex(switchTo, 99);

        // bring "old" UserControl to back
        Canvas.SetZIndex(currentUserControl, 0); // <---- PROBLEM HERE

        // define the UserControl we just brought to front as the current UserControl that is in front
        currentUserControl = switchTo;
    }
}

这里的问题似乎是currentUserControl变量。每当我在BringToFront()函数内调用它时,它似乎是空的(null)。

我不明白怎么回事,我确保在脚本开头用homeControl填写它。

我在这里遗漏了什么吗?

0 个答案:

没有答案