Я делаю какое-то приложение для колледжа, и я успешно смог показать и свернуть пользовательские элементы управления в моем приложении, но когда окно, которое я пытаюсь сделать, это не то, которое открывается при запуске приложения, оно просто не ' t work.
У меня есть событие мыши, которое срабатывает, когда я нажимаю на одну из меток (выступая в качестве меню):
class MouseEvents
{ public void MouseClick(object sender)
{
//creating an instance of MainWindow to be able to reference the labels and user controls
MainWindow mainWindow = (MainWindow)Application.Current.MainWindow;
List<Label> menuDown = new List<Label> { mainWindow.toolAddPlayer, mainWindow.toolSearchPlayer, mainWindow.toolAddMember, mainWindow.toolSearchMember, mainWindow.toolEditPass, mainWindow.toolEmailList };
List<UserControl> userDown = new List<UserControl> { mainWindow.addPlayer, mainWindow.searchPlayer, mainWindow.addMember, mainWindow.searchMember, mainWindow.editPassword, mainWindow.EmailList };
var menuItem = (Label)sender;
for (int i = 0; i < 6; i++)
{
if (menuItem.Content == menuDown[i].Content)
{
HideUserControls();
userDown[i].Visibility = Visibility.Visible;
}
}
}
public void HideUserControls()
{
MainWindow usingControls = (MainWindow)Application.Current.MainWindow;
usingControls.addPlayer.Visibility = Visibility.Collapsed;
usingControls.searchPlayer.Visibility = Visibility.Collapsed;
usingControls.addMember.Visibility = Visibility.Collapsed;
usingControls.searchMember.Visibility = Visibility.Collapsed;
usingControls.editPassword.Visibility = Visibility.Collapsed;
usingControls.EmailList.Visibility = Visibility.Collapsed;
}
}
В окне xaml (MainWindow.xaml), где Я хочу, чтобы мои пользовательские элементы управления появлялись или исчезали, у меня есть этот код
<StackPanel DockPanel.Dock="Bottom" Height="440" Width="590">
<local:AddPlayer x:Name="addPlayer" Visibility="Collapsed"/>
<local:SearchPlayer x:Name="searchPlayer" Visibility="Collapsed"/>
<local:AddMember x:Name="addMember" Visibility="Collapsed"/>
<local:SearchMember x:Name="searchMember" Visibility="Collapsed"/>
<local:EditPassword x:Name="editPassword" Visibility="Collapsed"/>
<local:EmailList x:Name="EmailList" Visibility="Collapsed"/>
</StackPanel>
И он отлично работает. Проблема в том, что я хочу добавить окно для входа в приложение (это окно входа в систему будет загружать MainWindow.xaml, когда я нажимаю кнопку входа в систему). Я изменил свой App.xaml, чтобы обновить StartupUri до LogIn.xaml
<Application x:Class="SimplyRugby_2._0.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:SimplyRugby_2._0"
StartupUri="LogIn.xaml">
<Application.Resources>
</Application.Resources>
</Application>
. Таким образом, приложение запускается, как и должно быть, в окне входа в систему. Проблема возникает, когда я пытаюсь нажать на меню в окне MainWindow.
Я получаю ссылку не на экземпляр ошибки объекта. Я проверял на StackOverflow и Google, но я действительно не могу найти решение. Я не знаю, как ссылаться на это. Я сделал это, когда MainWindow было окном, которое запускается при инициализации приложения, но если это не первое окно, оно просто выдает мне ошибку
System.NullReferenceException: 'Object reference not set to an instance of an object.'
mainWindow was null.
Что я делаю не так?
Большое спасибо заранее