每个WPF DataGrid列中的按钮

每个WPF DataGrid列中的按钮,wpf,xaml,button,datagrid,Wpf,Xaml,Button,Datagrid,我想在每个wpf datagrid列中添加一个按钮。我的列是自动生成的,因此我没有xaml中列的定义。如何使用列的模板来实现这一点,这样我就有了列标题和右侧的按钮 编辑: User.myDataTable填充在模型中,工作正常。您可以使用以下样式: <DataGrid> <DataGrid.ColumnHeaderStyle> <Style TargetType="DataGridColumnHeader">

我想在每个wpf datagrid列中添加一个按钮。我的列是自动生成的,因此我没有xaml中列的定义。如何使用列的模板来实现这一点,这样我就有了列标题和右侧的按钮

编辑:



User.myDataTable填充在模型中,工作正常。

您可以使用以下样式:

<DataGrid>
    <DataGrid.ColumnHeaderStyle>
        <Style TargetType="DataGridColumnHeader">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate>
                        <StackPanel Orientation="Horizontal">
                            <TextBlock Text="{Binding ColumnName}" />
                            <Button Content="Button" />
                        </StackPanel>
                    </ControlTemplate>
                 </Setter.Value>
             </Setter>
         </Style>
     </DataGrid.ColumnHeaderStyle>
 <DataGrid>


好的,效果很好,但是如何绑定到我的columnname?它们是自动创建的,并且我的datagrid的源绑定到我的模型中的datatable尝试以下操作:您可能需要将绑定从“User.myDataTable”更改为“User.myDataTable.DefaultView”只是一个注释,我通常不绑定到DataTables,所以我不熟悉这种方法。好的,但是现在我的DataGrid显示了一列文本框文本:Application.ViewModels.UserViewmodel,然后是按钮。如果datagridd已填充,则自动生成的列会溢出该文本。你有解决这个问题的办法吗?
<DataGrid>
    <DataGrid.ColumnHeaderStyle>
        <Style TargetType="DataGridColumnHeader">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate>
                        <StackPanel Orientation="Horizontal">
                            <TextBlock Text="{Binding ColumnName}" />
                            <Button Content="Button" />
                        </StackPanel>
                    </ControlTemplate>
                 </Setter.Value>
             </Setter>
         </Style>
     </DataGrid.ColumnHeaderStyle>
 <DataGrid>
 use the below code:-

    DataGridTemplateColumn templateColumn = new DataGridTemplateColumn();

    FrameworkElementFactory HeaderStackpanel = new    FrameworkElementFactory(typeof(StackPanel));
    FrameworkElementFactory btn = new FrameworkElementFactory(typeof(Button));
    // Set the property for  Button

    btn.SetValue(Button.MarginProperty, new Thickness(-50, 0, 0, 0));
    btn.AddHandler(Button.ClickEvent, new RoutedEventHandler(BtnClick));
     // Set the Text Value to the buttons

    btn.SetValue(Button.ContentProperty, strEdit);

   // Append the Edit Button

   HeaderStackpanel.AppendChild(btn);
   DataTemplate headerTemplate = new DataTemplate();
   headerTemplate.VisualTree = HeaderStackpanel;

   templateColumn.HeaderTemplate = headerTemplate;