Проблема : я получаю исключение System.ArgumentNullException: 'Value cannot be null.'
при вызове функции Canvas.SetZIndex()
.
Что я пытаюсь выполнить: У меня есть 2UserControls накладываются друг на друга в моем приложении WPF.После одного нажатия кнопки я хотел бы вывести одно на передний план и вернуть старый пользовательский элемент управления, используя SetZIndex()
.
Мой код в 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()
.
Я не понимаю, как, хотя, я убедился, чтобы заполнить его homeControl
в начале скрипта..
Я что-то здесь упускаю?