WPF c#如何动态地向面板子项添加用户控件,从UC到Panel冒泡/隧道

时间:2017-09-15 15:36:41

标签: c# wpf xaml user-controls routed-events

我创建了一个usercontrol(名为UCDataGrid),我希望在运行时将其添加到主窗口。

在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中的复选框时,如何进行冒泡/隧道传输?

我想点击usercontrol(UCDataGrid)中的复选框,然后从我的MainWindow运行代码。

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

1 个答案:

答案 0 :(得分: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冒泡到父窗口。