在我的应用程序中,我在导航窗口上放置了两个页面。
Page 1 主页面,顶部有三个按钮(如功能区菜单)和一个框架(在页面的后半部分,可在框架内导航)
第2页 - 是第一页点击第1页按钮时指向框架内的第二页。
在第2页中,我有Datagrid
显示测试环境的服务器列表 - TestServer1 .. TestServerN,用于开发-DevServer1 ... DevServern和用于生产-PrdServer1..PrdServerN。
目前当这些按钮被cliked时,所有服务器都显示在datagrid中,但我关注的是按以下顺序显示,
用户点击时
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按钮,我传递tha参数和(服务器s)..有歧义和错误..如何为其他两台服务器实现?任何想法??
编辑
当我将这些额外的块添加到我的代码
时,我有以下错误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'已经定义了一个名为'Page2'的成员,其参数类型相同
错误2 - 我收到此错误3次 以下方法或属性之间的调用不明确:'FN_UI.Views.Page2.Page2(FN_UI.Server)'和'FN_UI.Views.Page2.Page2(FN_UI.Server)'
完整代码的链接 - https://gist.github.com/userXemY/c477c25c0c1641470c35
答案 0 :(得分:2)
一个类中不能有三个具有相同参数类型的构造函数。
你实际上在任何地方使用Server s
构造函数参数吗?
无论如何,通过将搜索字符串添加为另一个参数来只写一个构造函数:
public Page2(Server s, string what)
{
InitializeComponent(); // and don't forget this
Db_Entities db = new Db_Entities();
var query1 = (from a in this.db.Servers
where a.ServerID.Contains(what)
orderby a.ServerID
select a).ToList();
datagrid1.ItemsSource = query1.ToList();
// where is s used?
}
然后像这样调用它:
Server s = new Server();
Page2 pg = new Page2(s, "TEST");
和
Server s = new Server();
Page2 pg = new Page2(s, "PRN");
和
Server s = new Server();
Page2 pg = new Page2(s, "DEV");