我有一個MainWindow。它有一個堆棧面板myStack和其他一些東西。 在stackPanel中,以編程方式添加了一個用戶控件(TaskGrid(_TG))。 在這個UserControl中,有一個DataGrid(dgEmployee),它有4個模板列。最後一列包含一個按鈕。以編程方式從mainwindow在用戶控件的datagridtemplatecolumn中添加按鈕單擊事件
我想從主窗口構造函數中分配按鈕單擊事件,並在這裏處理事件。
這裏是代碼:
在MainWindow.xaml
<Grid Grid.Row="2">
<StackPanel Name="myStack"/>
</Grid>
在MainWindow.xaml.cs
public MainWindow()
{
InitializeComponent();
_TG = new TaskGrid();
_TD = new _1.TaskDetails();
_TM = new _1.TaskMaster();
myStack.Children.Add(_TG);
_AUC = ActiveUserControl.Grid;
foreach (object child in myStack.Children)
{
string childname = "";
if (child is FrameworkElement)
{
childname = (child as FrameworkElement).Name;
if (childname == "TaskGrid")
{
Grid dg = ((Grid)((UserControl)child).Content);
foreach (var item in dg.Children)
{
DataGridColumn b = ((DataGrid)item).Columns[3] as DataGridColumn;
}
}
}
}
}
而且在TaskGrid.xaml,則此處僅給出模板列
<DataGridTemplateColumn Width="30">
<DataGridTemplateColumn.CellTemplate>
<ItemContainerTemplate>
<Button Name="btnMaster" Background="Transparent">
<Button.Template>
<ControlTemplate>
<Image Source="ArrowRight.png"/>
</ControlTemplate>
</Button.Template>
</Button>
</ItemContainerTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
我必須分配click事件像
button.click += new RoutedEvent(button_click);
後來在
後來我從usercontrol捕獲了主窗口實例作爲父窗口。所以我試圖從主窗口處理網格中的按鈕單擊事件的方式變得沒有必要。所以我無法測試你的代碼。但從邏輯上來看似乎是對的,所以我把它作爲一個正確的答案。謝謝你的幫助。 –