私はMainWindowを持っています。それはスタックパネルmyStackと他のものを持っています。 stackPanelには、プログラムで追加されたユーザーコントロール(TaskGrid(_TG))があります。 このUserControlには、4つのテンプレート列を持つDataGrid(dgEmployee)があります。最後の列にはボタンがあります。メインウィンドウからユーザコントロールのDataGridtemplateColumnにボタンクリックイベントをプログラムで追加する
メインウィンドウのコンストラクタからボタンのクリックイベントを割り当てて、ここでイベントを処理しようとしています。ここで
はコードです:で
MainWindow.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;
}
}
}
}
}
そしてTaskGrid.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
がロードされるまでMainWindow.xaml.cs
後で私はusercontrolから親ウィンドウとしてメインウィンドウインスタンスを取得しました。だから、私はメインウィンドウからグリッドのボタンクリックイベントを処理しようとしていたが、不要になる。だから私はあなたのコードをテストすることができませんでした。しかし、論理的に正しいと思われるので、私は正しい答えとしてそれを置きます。ご協力いただきありがとうございます。 –