2017-09-15 41 views
0

我已经创建了一个usercontrol(命名为UCDataGrid),我想在运行时添加到我的主窗口。WPF c#如何添加一个用户控件面板的动态,从UC到面板的气泡/隧道

在MainWindow.xaml.cs:

private void GetAnotherUserControl(string sUCName) 
{ 
    var UC_Grid = new UCDataGrid(); 

    ... 

    // Add to 'PositioningGrid' Grid Layout 
    PositioningGrid.Children.Add(UC_Grid); 

    // Register UC_Grid Name 
    PositioningGrid.RegisterName(sUCName, UC_Grid); 

    ... 
} 

在MainWindow.XAML [结构]:

Grid (named “TopGrid”) -> Grid (named “PostioningGrid”) 

PositioningGrid将保持儿童控制/用户控件我开发其将被动态地添加在运行时取决于业务规则。

通过以这种方式添加我的用户控件,当我点击动态添加的用户控件中的复选框时,如何进行冒泡/隧道操作?

我想单击我的usercontrol(UCDataGrid)中的复选框并从我的MainWindow运行代码。

我已经尝试了几种方法,但想知道是否有某种方式通知我的MainWindow用户已经点击了复选框。

回答

0

的窗口句柄CheckBox.Checked路由事件:

<Window x:Class="WpfApplication1.Window1" 
     ... 
     Title="Window7" Height="300" Width="300" CheckBox.Checked="Window_Checked"> 

或者:

this.AddHandler(CheckBox.CheckedEvent, new RoutedEventHandler(Window_Checked)); 

Checked事件会冒泡从CheckBox父窗口。