问题:当我调用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
填写它。
我在这里遗漏了什么吗?