Имеется 3 страницы и в каждой есть DataGrid в который подтягивается инфа из БД (расписание автобусов) посредством EntityFramawork. Так же имеется одно окно, по типу Билета, в который должна передаваться информация из ранее выбранной страницы с расписанием. [B]Проблема[/B]: Из одной страницы с расписанием и передачу в другое окно я сделать смог, а вот когда из других страницы пытаюсь сделать это, то уже происходит какой-то конфликт (не понимаю какой) между переносом данных, и, отрисовка и передача данных в "Билет" пропадает, что не так? Код страницы с расписанием из которой получается перенести данные:
BusDBEF ent = new BusDBEF();
public ticketChelPage()
{
InitializeComponent();
//подгрузка из БД в DataGrid
chelInfo.ItemsSource = ent.Челябинск.ToList();
}
private void Next_Click(object sender, RoutedEventArgs e)
{
Челябинск chel = chelInfo.SelectedItem as Челябинск;
if (chel!=null)
{
try
{
if (txtSecName.Text.Length != 0 && txtSecName.Text.Length != 0 && txtEmail.Text.Length != 0)
{
//проверка мыла и сохранение в БД
string emChek = Convert.ToString(txtEmail.Text);
bool testEm = CheckEmail.EmailChecker(emChek);
if (testEm == true)
{
User addUser = new User
{
SecondName = txtSecName.Text,
FirstName = txtFirstName.Text,
ThirdName = txtThirdName.Text,
Email = txtEmail.Text
};
ent.User.Add(addUser);
ent.SaveChanges();
reservedTicketWindow reserved = new reservedTicketWindow(chel);
Manager.MainFrame.Navigate(new MainPage());
reserved.Show();
}
}
else
{
MessageBox.Show("Заполните все поля под *", "Внимание", MessageBoxButton.OK, MessageBoxImage.Warning);
}
}
catch
{
MessageBox.Show("Ошибка подключения к БД", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
else
{
MessageBox.Show("Выберите время", "Внимание!", MessageBoxButton.OK, MessageBoxImage.Warning);
}
}
Код страницы "Билета"
BusDBEF ent = new BusDBEF();
Челябинск _chel;
public reservedTicketWindow()
{
}
public reservedTicketWindow(Челябинск chel)
{
InitializeComponent();
try
{
_chel = chel;
DataContext = chel;
}
catch
{
MessageBox.Show("Error");
}
//рандомайзер билета
Random rnd = new Random();
int bilet = rnd.Next(10000);
txtTicketNumber.Text = Convert.ToString(bilet);
}
Код страницы из которой НЕ получается вытянуть данные:
BusDBEF ent = new BusDBEF();
public ticketAlexPage()
{
InitializeComponent();
//вывод из БД в DataGrid
alexInfo.ItemsSource = ent.Александровка.ToList();
}
private void Next_Click(object sender, RoutedEventArgs e)
{
Александровка alexa = alexInfo.SelectedItem as Александровка;
if (alexa != null)
{
try
{
if (txtSecName.Text.Length != 0 && txtSecName.Text.Length != 0 && txtEmail.Text.Length != 0)
{
//проверка мыла и сохрение в БД
string emChek = Convert.ToString(txtEmail.Text);
bool testEm = CheckEmail.EmailChecker(emChek);
if (testEm == true)
{
User addUser = new User
{
SecondName = txtSecName.Text,
FirstName = txtFirstName.Text,
ThirdName = txtThirdName.Text,
Email = txtEmail.Text
};
ent.User.Add(addUser);
ent.SaveChanges();
reservedTicketWindow reserved = new reservedTicketWindow(alexa);
Manager.MainFrame.Navigate(new MainPage());
reserved.Show();
}
}
else
{
MessageBox.Show("Заполните все поля под *", "Внимание", MessageBoxButton.OK, MessageBoxImage.Warning);
}
}
catch
{
MessageBox.Show("Ошибка подключения к БД", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
else
{
MessageBox.Show("Выберите время", "Внимание!", MessageBoxButton.OK, MessageBoxImage.Warning);
}
}
Челябинск _chel;Вы создали класс с русским названием, его и используете, ну не правильно это. Судя поtxtSecName.Textу вас нет какой либо привязки, да, может местами вы и пытаетесь ее реализовать, но все равно это не то. У вас должен быть 1 класс, который установлен какDataContextи уже в XAML вы задаете все необходимые привязки. – EvgeniyZ Apr 10 '20 at 11:10