我正在使用RibbonWindow
, 在第一部分中我使用ribbonBar 按钮和其他控件,在第二部分中我曾经DockPanel
显示/加载其他控件
我有两个用户控件,一个是使用TextBox
和DropDown
控件显示详细信息,另一个用户控件是显示 DataGrid 中的所有现有数据。
这两个控件必须根据 Condition 放置在 DockPanel 中,它位于RibbonWindow
...
现在,我想要的是,当我单击任何 Grid 行时,我需要将选定的 GridRow 数据填充到 DisplayUserControl(userControl1)中,并且 userControl 必须加载(替换第二个 userControl)到该 DockPanel ...
我所做的是......
UserControl2
首先,我加载Dockpanel
并
RibbonWindow
填充 Grid 数据
我已经使用 ClickEvent
( GridList_MouseDoubleClick()
)获取了网格行的值
在那个方法中,我调用了一个 DelegateEvent 来调用在 MainRibbonWindow 中声明的方法......
该方法应该显示DockPanel
并加载另一个用户控件。代码如下。
下面的方法在 MainRibbonWindow ...
public void fnDisplayEmployeeDetails(string str,DockPanel dockPannel)
{
// dockPannel is to be cleared...
this.Dispatcher.BeginInvoke((Action)delegate { dockPannel.Children.Clear(); }, null); //To Clear the Dock Panel
CtlAddEmployee frm2 = new CtlAddEmployee(str); //userControl1 and here str is Id of the Row...
dockPannel.Children.Add(frm2);
}
到这里所有的工作都完成了,但DockPanel
剩下的只有第二个 userControl(即仅显示网格)。停靠面板未替换为 firstUserControl
如果我试图在另一个 Window 的 Dockpanel 中显示这些相同的值,它显示得很好。我不知道为什么会发生这种奇怪的行为......
public void fnDisplayEmployeeDetails(string str,DockPanel docPannel)
{
this.Dispatcher.BeginInvoke((Action)delegate { docPannel.Children.Clear(); }, null); //To Clear the Dock Panel
CtlAddEmployee frm2 = new CtlAddEmployee(str);
MainWindow mnWindow = new MainWindow(); //another window Form...
mnWindow.MainWindowDock.Children.Add(frm2);
mnWindow.ShowDialog(); //here it is showing well....
}
我应该如何在另一个用户控件中显示网格值的详细信息,并且该用户控件必须填写在同一个 Dockpanel 中......