2012-01-09 34 views
0

遷移值,我有一個名爲在用戶控件

  1. 兩個用戶控件歡迎
  2. 數據

在一個主窗口

在我使用一個DataGrid第二個用戶控件。在數據網格中的元素的變化我必須能夠設置的值在Welcome用戶控制

Welcome用戶控制

<StackPanel Orientation="Horizontal"> 
    <Label Content="Name:" FontWeight="Bold" Name="lblClientName" /> 
    <TextBox Name="txtClientName" Width="85" 
     Background="Transparent" IsReadOnly="True"/> 
</StackPanel> 

Data用戶控制

private void DataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    // Here on change of this event i must be able to display 
    // data in textbox i.e.txtClientName 
} 
+0

您可以在數據用戶控件中創建自定義事件。並訂閱其歡迎用戶控制需要對其執行操作的事件。 – 2012-01-09 05:23:59

+0

在每一行上單擊數據網格中的文本框(在歡迎用戶控件中)的值必須更改,我與此混淆請任何人都可以提供示例代碼 – Honey 2012-01-09 12:23:45

回答

0

這是非常簡單的東西,只需要一些.NET框架的基本知識..我希望這可以幫助你。我剛剛在Data usercontrol中創建了一個自定義事件,它將冒泡行事件。

數據用戶控件代碼:

public partial class Data : UserControl 
    { 

     private event EventHandler _RowSelectionChanged; 
     public event EventHandler RowSelectionChanged 
     { 
      add { _RowSelectionChanged += value; } 
      remove { _RowSelectionChanged -= value; } 
     } 

     private void RaiseSelectionChanged(object sender, SelectionChangedEventArgs e) 
     { 
      if (_RowSelectionChanged != null) 
       _RowSelectionChanged(sender, e); 
     } 
     public Data() 
     { 
      InitializeComponent(); 
     } 

     private void DataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e) 
     { 
      RaiseSelectionChanged(sender, e); 
     } 

    } 

歡迎用戶控件代碼:

public partial class Welcome : UserControl 
    { 
     public Welcome() 
     { 
      InitializeComponent(); 
     } 

     public string ClientName 
     { 
      get 
      { 
       return txtClientName.Text; 
      } 
      set 
      { 

       txtClientName.Text = value; 

      } 
     } 
    } 

主窗口類:

public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 
      this.Loaded += new RoutedEventHandler(MainWindow_Loaded); 
     } 

     void MainWindow_Loaded(object sender, RoutedEventArgs e) 
     { 
      ucData.RowSelectionChanged += new EventHandler(ucData_RowSelectionChanged); 
     } 

     void ucData_RowSelectionChanged(object sender, EventArgs e) 
     { 
      var ev = e as SelectionChangedEventArgs; 
      var grid = sender as DataGrid; 
      ucWelcome.ClientName = "any thing"; 
      //this is how you can change Welcome UserControl 
     } 
    } 

問候。