加载另一个用户控件在 wpf 功能区窗口中,当我们单击数据网格行时

本文关键字:单击 我们 数据 数据网 网格 控件 用户 另一个 wpf 窗口 功能区 | 更新日期: 2023-09-27 18:35:50

请耐心等待阅读本文...简而言之,我想要的是" 当我单击数据网格行,这些值必须显示在另一个行中表单(此处为用户控件).."

我正在使用一个 Wpf 功能区窗口。该窗口分为两行。在第一行中,我填充了 Wpf 功能区,在第二行中,我填充了一个 Dock 面板以填充基于操作的用户控件。

功能区有两个按钮

  1. 显示所有员工
  2. 添加员工

我创建了两个用户控制表单,一个是输入员工详细信息,第二个是显示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...我不知道为什么请告诉我解决方案.....

感谢您的耐心等待...阅读此内容...

加载另一个用户控件在 wpf 功能区窗口中,当我们单击数据网格行时

您也必须为 dockpanel 调用事件。例如,leftMouseButtonUp,并在那里停靠您的用户控件。