나는 MainWindow을가집니다. 그것은 stackpanel myStack과 다른 것들을 가지고 있습니다. stackPanel에는 프로그래밍 방식으로 추가 된 usercontrol (TaskGrid (_TG))이 있습니다. 이 UserControl에는 4 개의 템플릿 열이있는 DataGrid (dgEmployee)가 있습니다. 마지막 열에는 버튼이 있습니다.프로그래밍 방식으로 mainwindow에서 사용자 정의 컨트롤의 DataGridtemplateColumn에 단추 클릭 이벤트 추가
mainwindow 생성자에서 버튼 클릭 이벤트를 할당하고 여기에서 이벤트를 처리하려고합니다. 의 TaskGrid.xamlMainWindow.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;
}
}
}
}
}
그리고 에서에서 MainWindow.xaml
<Grid Grid.Row="2">
<StackPanel Name="myStack"/>
</Grid>
에서 : 여기
는 코드입니다 템플릿 열만 여기에 표시됩니다<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>
나는
button.click += new RoutedEvent(button_click);
처럼 클릭 이벤트를 지정하고 나중에 UserControl
까지
나중에 사용자 콘트롤에서 부모로 메인 창 인스턴스를 잡았습니다. 그래서 메인 윈도우에서 그리드의 버튼 클릭 이벤트를 처리하려고하는 방식은 불필요 해졌습니다. 그래서 당신의 코드를 테스트 할 수 없었습니다. 하지만 그것은 논리적으로 옳은 것처럼 보입니다. 그래서 나는 그것을 올바른 답으로 씁니다. 당신의 도움을 주셔서 감사합니다. –