[英]Loading another userControl in wpf Ribbon Window when the we click on DataGrid row
请耐心阅读...简要地讲,我想要的是“当我单击DataGrid行时,这些值必须以另一种形式显示(此处为userControl)。”
我正在使用一个Wpf Ribbon窗口。该窗口分为两行。 在第一行中,我填充了Wpf功能区,在第二行中,我填充了一个Dock面板,以基于Action填充Usercontrols。
功能区有两个按钮
我创建了两个Usercontrol窗体,一个是输入员工详细信息,第二个是显示DataGrid中的所有记录。
现在,我首先单击功能区Button1以显示所有员工详细信息,然后将userControl“ CtlGridDisplay”加载到DockPanel(位于功能区窗口中)并在DataGrid中显示所有详细信息。
现在,我双击行,并选择选定的行employeeId,然后我希望在另一个UserControl“ CtlAddEmployee”中显示该详细信息,而该userControl必须仅在该DockPanel中显示..为此,我试图清除Dockpanel并创建了控件“ CtlAddEmployee”的对象,并将该控件添加到DockPanel中。。但是DockPanel仍然仅用DataGRid填充,即用“ CtlGridDisplay”填充...我不明白为什么...
为此,我还使用了Event和Delegates,它可以很好地执行所有代码,但是Dockpanel并未清除并且未加载新控件。
但是,当我单击一个功能区button1时,它会加载“ CtlGridDisplay”,而当我单击功能区button2时,它会在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 ...我不知道为什么请告诉我解决方案.....
多谢您的耐心...阅读此书...
您也必须为事件面板调用事件。 例如leftMouseButtonUp,然后停靠您的用户控件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.