c # WPF - SetZIndex UserControl проблема - PullRequest
0 голосов
/ 26 мая 2018

Проблема : я получаю исключение 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 в начале скрипта..

Я что-то здесь упускаю?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...