请耐心地阅读这个...简要地说我想要的是“当我 单击DataGrid行,这些值必须在另一行中显示 form(这里是userControl)..“
我正在使用一个Wpf功能区窗口..并且该窗口分为两行。在第一行中我填充了Wpf功能区,在第二行中我填充了一个Dock面板以根据操作填充Usercontrol ..
功能区有两个按钮
我创建了两个Usercontrol Forms,一个是输入员工详细信息,第二个是显示DataGrid中的所有记录..
现在我首先点击功能区Button1以显示所有员工详细信息,然后将userControl“CtlGridDisplay”加载到DockPanel(位于功能区窗口中)并显示DataGrid中的所有详细信息。
现在我双击行并获取所选行employeeId然后我希望在另一个用户控件“CtlAddEmployee”中显示该详细信息并且此userControl必须仅显示在该DockPanel中...因为我试图清除Dockpanel并为Control“CtlAddEmployee”创建了对象,并将该控件添加到DockPanel ..但DockPanel仍然填充 DataGRid只是填充了“CtlGridDisplay”......我无法理解为什么......
要做到这一点,我还使用了事件和代理,它可以很好地执行所有代码,但Dockpanel没有被清除,也没有加载新的控件..
但是当我点击一个功能区button1时,它会加载“CtlGridDisplay”,当我点击功能区按钮2时,它在Dock面板中加载“CtlAddEmployee”......
但当我试图显示数据时,我在一个userControl中单击DataGrid以显示在另一个控件中不起作用..
事件代表方法代码如下......
在用户控件“CtlDisplayEmployeeList”中,代码
public event MyOrganizationDetails.MainRibbonWinodw.DisplayEmployeeHandler DisplayemployeeEvent;
private void GridList_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
MainRibbonWinodw mainRibbonobj = new MainRibbonWinodw();
this.DisplayemployeeEvent += new MainRibbonWinodw.DisplayEmployeeHandler(mainRibbonobj.fnDisplayEmployeeDetails);
if (GridList.SelectionUnit == DataGridSelectionUnit.FullRow)
{
if (GridList.SelectedItems.Count > 0)
{
for (int i = 0; i < GridList.SelectedItems.Count; i++)
{
DataGrid dg = sender as DataGrid;
EmployeeDetail detail = dg.SelectedItem as EmployeeDetail;
string selectedEmp = detail.EmpId; //it gives Employee Id
if (DisplayemployeeEvent != null)
DisplayemployeeEvent(selectedEmp);
}
}
}
}
在功能区窗口中..代码将......在此处理事件......
public partial class MainRibbonWinodw : RibbonWindow
{
public delegate void DisplayEmployeeHandler(string str);
public void fnDisplayEmployeeDetails(string str)
{
CtlAddEmployee frm2 = new CtlAddEmployee(str);
DockPanelInRibbon.Children.Clear();
DockPanelInRibbon.Children.Add(frm2);
}
}
在另一个用户控件中..
构造...
public CtlAddEmployee(string str)
{
InitializeComponent();
fnDisplayingEmployee(str);
}
当我调试所有代码被解雇但是“CtlAddEmployee”表单没有加载到DockPanel ... Dock面板仍然是那个DataGRid ...我不知道为什么请告诉我解决方案....
感谢您的耐心......阅读本文...
答案 0 :(得分:0)
您也必须为dockpanel调用事件。例如,leftMouseButtonUp并在那里停靠你的usercontrol。