2012-05-30 29 views
0

請耐心閱讀此...簡單地說我想要的是「當我點擊DataGrid行時,這些值必須在另一個 表單中顯示(這裏是userControl)..「當我們點擊DataGrid行時,在wpf Ribbon窗口中加載另一個userControl行

我正在使用一個Wpf Ribbon窗口..並且該窗口被分成兩行。在第一排我充滿了WPF絲帶和第二排我填一個固定面板,以填補根據該行動用戶控件..

功能區有兩個按鈕

  1. 顯示所有員工
  2. 添加員工

我創建了兩個用戶控件形式之一是輸入員工詳細信息,第二個是要顯示在DataGrid中的所有記錄..

現在我首先點擊功能區Button1顯示所有員工詳細信息,然後將userControl「CtlGridDisplay」加載到DockPanel(位於功能區窗口中)並在DataGrid中顯示所有詳細信息。

現在我雙擊行並採取選定的行employeeId然後我希望顯示在另一個用戶控件「CtlAddEmployee」的詳細信息和此用戶控件必須顯示在該DockPanel中..爲此,我試圖清除Dockpanel並創建了控件「CtlAddEmployee」的對象,並將該控件添加到DockPanel中。但DockPanel仍然只填充了 DataGRid即填充了「CtlGridDisplay」...我無法理解爲什麼...

要做到這一點,我也使用了Events和Delegates,它可以很好地執行所有的代碼,但DockPanel不會被清除,也不會加載新的控件。但是,當我點擊一個功能區button1它加載「CtlGridDisplay」,當我點擊功能區button2,它在Dock面板中加載「CtlAddEmployee」以及...

但是當我試圖顯示數據我點擊在數據網格中的一個用戶控件在另一個控件中顯示不工作..

活動委派方式代碼就像下面...

在用戶控制「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

您也必須爲dockpanel調用事件。例如,leftMouseButtonUp,並停靠你的用戶控件。

+0

爲了清晰起見,請修改。 –

相關問題