В моем приложении у меня есть две страницы, расположенные в окне навигации.Передача параметров на страницу с использованием конструкторов
Page 1 главная страница и имеет три кнопки сверху (как меню ленты) и рама (на второй половине страницы, чтобы перемещаться в пределах кадра)
Page 2 - это второе страница, которая будет направлена в рамку при нажатии кнопок на странице.
У меня есть Datagrid
, отображающий список серверов для тестовой среды - TestServer1 .. TestServerN, для разработки -DevServer1 ... DevServern и для Production -PrdServer1..PrdServerN.
в настоящее время, когда эти кнопки являются cliked, все серверы которые будут отображаться в сетке, но моя задача показать в следующем порядке,
, когда пользователь щелкает
tstbutton (тест) - это следует перейти на страницу 2 и отобразить только серверы, принадлежащие тестовой системе.
devbutton (dev) - он должен перейти на страницу 2 и отображать только серверы, принадлежащие системе разработки.
prdbutton (prd) - он должен перейти на страницу 2 и отображать только серверы, принадлежащие производственной системе.
Я пробовал следующее, но я мог бы достичь только для одного сервера, передав параметр через конструктор.
Page1.cs
public partial class Page1 : Page
{
public Page1()
{
InitializeComponent();
}
private void PRD_Btn_Click(object sender, RoutedEventArgs e)
{
// Server x = new Server();
Page2 pg = new Page2();
this.NavigationService.Navigate(pg);
}
private void TST_Btn_Click(object sender, RoutedEventArgs e)
{
// this works, only if I pass one paramaterized constructor
Server s = new Server();
Page2 pg = new Page2(s);
this.NavigationService.Navigate(pg);
}
private void DEV_Btn_Click(object sender, RoutedEventArgs e)
{
// Server y = new Server();
Page2 pg = new Page2();
this.NavigationService.Navigate(pg);
}
}
Page2.cs
public partial class Page2: Page
{
public Page2()
{
InitializeComponent();
}
public Page2(Server s)
{
Db_Entities db = new Db_Entities();
string tst = "TEST";
var query1 = (from a in this.db.Servers
where a.ServerID.Contains(tst)
orderby a.ServerID
select a).ToList();
datagrid1.ItemsSource = query1.ToList();
}
}
Приведенный выше код работает отлично .. но если я раскомментировать код для другого два нажмите мероприятия для prdtst и кнопку devtst, и я передаю параметры вместе с (Server s) .. есть двусмысленность и ошибки .. как достичь для двух других серверов? есть идеи ??
EDIT
Я следующие ошибки, когда я добавить эти дополнительные блоки к моему коду
public Page2(Server x)
{
Db_Entities db = new Db_Entities();
string prd = "PRD";
var query1 = (from a in this.db.Servers
where a.ServerID.Contains(prd)
orderby a.ServerID
select a).ToList();
datagrid1.ItemsSource = query1.ToList();
}
public Page2(Server x)
{
Db_Entities db = new Db_Entities();
string dev = "DEV";
var query1 = (from a in this.db.Servers
where a.ServerID.Contains(dev)
orderby a.ServerID
select a).ToList();
datagrid1.ItemsSource = query1.ToList();
}
Ошибка 1 - Я получаю эту ошибку в 2 раза Тип «FN_UI.Views .Page2 'уже определяет элемент с именем «Страница 2» с теми же параметрами
Ошибка 2 - Я получаю эту ошибку 3 раза Вызов неоднозначен между следующими методами или свойствами: 'FN_UI.Views.Page2.Page2 (FN_UI.Server)' и 'FN_UI.Views.Page2.Page2 (FN_UI.Server)»
ссылка на полный код - https://gist.github.com/userXemY/c477c25c0c1641470c35
Можете ли вы объяснить подробно, пожалуйста? (Кстати, неоднозначные переопределения методов обычно вызывают озабоченность у компилятора, не забудьте их избежать). И класс ключевого слова отсутствует для страницы2 – icbytes
ok Я вставлю весь свой код .. так, чтобы у вас появилась идея .. – user1221765
Я добавил код к своему вопросу, для полной справки, любезно проверьте эту ссылку - https: //gist.github.com/userXemY/c477c25c0c1641470c35 – user1221765