加载另一个用户控件在 wpf 功能区窗口中,当我们单击数据网格行时
本文关键字:单击 我们 数据 数据网 网格 控件 用户 另一个 wpf 窗口 功能区 | 更新日期: 2023-09-27 18:35:50
请耐心等待阅读本文...简而言之,我想要的是" 当我单击数据网格行,这些值必须显示在另一个行中表单(此处为用户控件).."
我正在使用一个 Wpf 功能区窗口。该窗口分为两行。在第一行中,我填充了 Wpf 功能区,在第二行中,我填充了一个 Dock 面板以填充基于操作的用户控件。
功能区有两个按钮
- 显示所有员工
- 添加员工
我创建了两个用户控制表单,一个是输入员工详细信息,第二个是显示DataGrid中的所有记录。
现在我首先单击功能区按钮1以显示所有员工详细信息,然后将userControl"CtlGridDisplay"加载到DockPanel(在功能区窗口中)中,并在DataGrid中显示所有详细信息。
现在我双击行并获取选定的行 employeeId 然后我希望在另一个用户控件"CtlAddEmployee"中显示该详细信息,并且此用户控件必须仅在该 DockPanel 中显示.. 为此,我尝试清除 Dockpanel 并为控件"CtlAddEmployee"创建对象并将该控件添加到 DockPanel。但是 DockPanel 仍然填满了仅 DataGRid,即填充"CtlGridDisplay"...我不明白为什么...
为此,我还使用了事件和委托,它可以很好地执行所有代码,但 Dockpanel 未清除并且没有加载新控件。
但是当我单击一个功能区按钮1时,它会加载"CtlGridDisplay",当我单击功能区按钮2时,它会在Dock面板中很好地加载"CtlAddEmployee"...
但是当我尝试显示数据时,我在一个用户中单击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...我不知道为什么请告诉我解决方案.....
感谢您的耐心等待...阅读此内容...
您也必须为 dockpanel 调用事件。例如,leftMouseButtonUp,并在那里停靠您的用户控件。