2012-01-09 88 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 
     } 
    } 

问候。