本帖最后由 BENNY_LIBB 于 2012-12-24 13:47:47 编辑

解决方案 »

  1.   

    在datagrid的 LoadingRow事件中查找模版中的控件               
     if (datagrid.Columns[0].GetCellContent(e.Row).FindName("textbox") is TextBox         
       {
          TextBox text = datagrid.Columns[0].GetCellContent(e.Row).FindName("textbox") as TextBox;
    然后添加事件可以了,不知道你是不是这个意思,希望对你有用
    }
                 
      

  2.   

    在主窗体 Loaded事件 中查找并实例化此控件,没实例化你打算怎么查找?你控件存在那里?
      

  3.   


    多谢,不是这情况,
    是在一个 .xaml主窗体中的一个用户定义控件
      

  4.   


    主窗体的Loaded事件:
     private void UserControl_Loaded(object sender, RoutedEventArgs e)
            {
                TreeMarketPriceControl treeExitMarketPrice1 = FindVisualChild<TreeMarketPriceControl>(this.TabTree);
                if (treeExitMarketPrice1 != null)
                {
                    treeExitMarketPrice1.ExistMarketList += new TreeMarketPriceControl.OnExistMarketList(distributeMsg_DisRegExistMarketPrice);
                } 
            }
    查找用的是一个方法,如下,假如要找的用户控件是TreeMarketPriceControl,引用方法:
     TreeMarketPriceControl treeExitMarketPrice1 = FindVisualChild<TreeMarketPriceControl>(this.TabTree ); this.TabTree 是主窗体中包含此控件的一个控件,注意有时可以找到控件并注册, private childItem FindVisualChild<childItem>(DependencyObject obj)
            where childItem : DependencyObject
            {
                for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
                {
                    DependencyObject child = VisualTreeHelper.GetChild(obj, i);
                    if (child != null && child is childItem)
                        return (childItem)child;
                    else
                    {
                        childItem childOfChild = FindVisualChild<childItem>(child);
                        if (childOfChild != null)
                            return childOfChild;
                    }
                }
                return null;
            }